猿问

请问该怎样用一条sql 查出表(table)中 每科成绩高于80的 人的名字?

怎样用一条sql 查出表(table)中 每科成绩高于80的 人的名字
name subject mark
张三 数学 81
张三 语文 77
李四 数学 80
李四 语文 88
王五 数学 86
王五 语文 88
王五 英文 99

select name from ss Group by name having min(mark)>80;
这句话为什么查出的是2个人

眼眸繁星
浏览 242回答 3
3回答

MYYA

&nbsp;这样试试:select&nbsp;distinct&nbsp;name&nbsp;from&nbsp;table&nbsp;awhere&nbsp;not&nbsp;exists&nbsp;(select&nbsp;1&nbsp;from&nbsp;b&nbsp;where&nbsp;b.name&nbsp;=&nbsp;a.name&nbsp;and&nbsp;b.mark&nbsp;<=&nbsp;80)andname&nbsp;in&nbsp;(select&nbsp;name&nbsp;from&nbsp;table&nbsp;group&nbsp;by&nbsp;name&nbsp;having&nbsp;count(1)&nbsp;=&nbsp;3)

临摹微笑

select namefrom(select name,mark=min(mark)from tablegroup by name) awhere mark>80&nbsp;

桃花长相依

create&nbsp;table&nbsp;student(name&nbsp;varchar(10),kecheng&nbsp;varchar&nbsp;(10),fenshu&nbsp;int)insert&nbsp;into&nbsp;student&nbsp;values('张三','语文',81);insert&nbsp;into&nbsp;student&nbsp;values('张三','数学',74);insert&nbsp;into&nbsp;student&nbsp;values('李四','语文',76);insert&nbsp;into&nbsp;student&nbsp;values('李四','数学',90);insert&nbsp;into&nbsp;student&nbsp;values('王五','语文',81);insert&nbsp;into&nbsp;student&nbsp;values('王五','数学',100);insert&nbsp;into&nbsp;student&nbsp;values('王五','英语',90);&nbsp;select&nbsp;name&nbsp;from&nbsp;student&nbsp;group&nbsp;by&nbsp;name&nbsp;having&nbsp;min(fenshu)&nbsp;>=&nbsp;80;最重要的是最后一条&nbsp; 比较简洁。能展示所有每科分数都大于80 的学生。表名根据需要自己更改。&nbsp; 就是一句的话太长,容易出错。亲测&nbsp; mysql 运行没毛病建表嫌麻烦可以insert&nbsp;into&nbsp;student&nbsp;values('张三','语文',81),('张三','数学',74),('李四','语文',76),('李四','数学',90),('王五','语文',81),('王五','数学',100),('王五','英语',90);
随时随地看视频慕课网APP
我要回答