您的当前位置:首页正文

数据库刷题 DAY1

2024-11-07 来源:个人技术集锦

DAY1
考完试之后就没有接触过数据库了
打一下卡~

今天觉得比较有收获的就是
以下题目:
如何查找第N高的数据

思路一:
1.先找到最大的

select max(distinct 成绩) 
from 成绩表
where 课程='语文';

2.然后找到小于最大的最大值

select max(distinct 成绩) 
from 成绩表
where 课程='语文' and
      成绩 < (select max(distinct 成绩) 
              from 成绩表 
              where 课程='语文');

思路二:
用LIMIT和OFFSET
之前没有尝试过LIMIT和OFFSET

涉及语法点为:

select distinct 成绩  
from 成绩表
where 课程='语文'
order by 课程,成绩 desc
limit 1,1;

一些特殊情况
题目要求,如果没有第二高的成绩,返回空值,所以这里用判断空值的函数(ifnull)函数来处理特殊情况
ifnull(a,b)函数解释:
如果value1不是空,结果返回a
如果value1是空,结果返回b

select ifnull(2步的sql,null) as '语文课第二名成绩';

所以最终sql如下:

select ifnull(
(select max(distinct 成绩) from 成绩表
where 成绩<(select max(成绩) from 成绩表 where 课程='语文')
and 课程='语文')
,null) as '语文课第二名成绩';
显示全文