怎样用一条sql 查出表(table)中 每科成绩高于80的 人的名字name subject mark张三 数学 81张三 语文 77李四 数学 80李四 语文 88王五 数学 86王五 语文 88王五 英文 99select name from ss Group by name having min(mark)>80;这句话为什么查出的是2个人
3 回答
MYYA
TA贡献1868条经验 获得超4个赞
这样试试:
select distinct name from table awhere not exists (select 1 from b where b.name = a.name and b.mark <= 80)andname in (select name from table group by name having count(1) = 3) |
临摹微笑
TA贡献1982条经验 获得超2个赞
select name
from
(
select name,mark=min(mark)
from table
group by name
) a
where mark>80
桃花长相依
TA贡献1860条经验 获得超8个赞
create table student(name varchar(10),kecheng varchar (10),fenshu int)insert into student values('张三','语文',81);insert into student values('张三','数学',74);insert into student values('李四','语文',76);insert into student values('李四','数学',90);insert into student values('王五','语文',81);insert into student values('王五','数学',100);insert into student values('王五','英语',90); select name from student group by name having min(fenshu) >= 80; |
最重要的是最后一条 比较简洁。能展示所有每科分数都大于80 的学生。表名根据需要自己更改。 就是一句的话太长,容易出错。亲测 mysql 运行没毛病建表嫌麻烦可以
insert into student values('张三','语文',81),('张三','数学',74),('李四','语文',76),('李四','数学',90),('王五','语文',81),('王五','数学',100),('王五','英语',90); |
添加回答
举报
0/150
提交
取消
