mysql的分组查询和从查询结果中查询

首先是表格

要求用一条sql语句从该表中查询出每门课都大于80分的人

思路是查出每个人的课程数和满足条件的课程数,然后比较这两个数,查出满足的条件的人

第一步查出每个人的课程数 这个要用到分组查询,分组的条件就是name

语句select name,count(1) from test GROUP BY name

结果

第二步查出每个人满足的条件的数

select name,count(1) from test where fenshu>80 GROUP BY name

然后整合上两步

select name,count(1)as victory,(SELECT count(1) from test s where s.name=t.name) as count from test t where fenshu>80 GROUP BY name

然后从查询结果中寻找满足条件的

select name from(select name,count(1)as victory,(SELECT count(1) from test s where s.name=t.name) as count from test t where fenshu>80 GROUP BY name) temp where temp.victory=temp.count

大功告成