1、数据库 id name score
1 张** 72
2 王** 72
3 张*** 81
4 李**** 67
... ... ...
用两种方式查询student表中成绩为10~20名的学生
解决方法一:
select name from student order by score desc limit 9,10;
解决方法二:思路为新增一个伪列,伪列的是由1递增,取10-20即可
SET @rownum:=0; SELECT name,score FROM( SELECT (@rownum := @rownum + 1) AS rownum, t.* FROM student t ORDER BY t.score DESC) tt WHERE rownum BETWEEN 10 and 20;
2.having和not in
name | subject | score |
褚一 | 语文 | 88 |
褚二 | 数学 | 77 |
张三 | 语文 | 85 |
张三 | 数学 | 99 |
李五 | 语文 | 89 |
李五 | 数学 | 84 |
李五 | 英语 | 93 |
题:查询 student表每门课都大于80 分的学生姓名
方法一:
SELECT name FROM student GROUP BY name HAVING MIN(score)>80;
方法二:
SELECT DISTINCT(name) FROM student WHERE name not in (SELECT DISTINCT(name) FROM student WHERE score <=80);
原文:https://www.cnblogs.com/chushujin/p/13392735.html