MySQL-[--002--]-MySQL涉及的算法面试题

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);

猜你喜欢

转载自www.cnblogs.com/chushujin/p/13392735.html
今日推荐