怎样用一条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 a where not exists ( select 1 from b where b. name = a. name and b.mark <= 80) and name 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
提交
取消