这是SQL今日一题的第15篇文章
题目描述1
获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary
这题用到salaries表
salaries表
方法
select emp_no,salary from salaries
where to_date = '9999-01-01'
order by salary desc
limit 1,1
1、思路很简单了,先用where子句给定限制条件:where to_date = '9999-01-01'
2、对salary降序排列:order by salary desc
3、用limit取薪水第二多的员工信息:limit 1,1,需要注意的是,limit后的第一个参数是从0开始递增,也就是第一行记为0,第二行记为1,第二个参数是取几行。
方法2
select emp_no,salary
from salaries
where salary =
(
select salary from salaries
where to_date = '9999-01-01'
order by salary desc limit 1,1
)
但是,上面那种查询会存在一个问题,就是如果存在多个员工相同第二大薪水的情况怎么办,所以这里用子查询来嵌套一下,解决这个问题。
1、先筛选出当前日期下第二大薪水的值
2、再取