题目描述
有一个员工表 employees 简况如下:

有一个薪水表 salaries 简况如下:

请你查找薪水排名第二多的员工编号 emp_no,薪水 salary,员工的 last_name 以及 first_name ,要求不能使用 ORDER BY 完成,上述示例的查询结果为:

答案解析
本题有一个特殊的要求,不能使用 ORDER BY 。
思路:
- 首先查询出 salaries 表的最高工资
- 查询出 salaries 表除了最高工资以外的最高工资(第二高工资)
- 将第二高工资作为查询条件进行子查询
本题有多重子查询嵌套,SQL 语句如下:
SELECT e.emp_no,s.salary,e.last_name,e.first_nameFROM employees AS e INNER JOIN salaries AS sON e.emp_no = s.emp_noWHERE s.salary = ( -- 第三步:将第二高工资作为查询条件,使用子查询-- 第二步:查出除了原表最高工资以外的最高工资(第二高工资)SELECT MAX(salary) FROM salariesWHERE salary < (-- 第一步:查询出原表最高工资SELECT MAX(salary) FROM salaries));
_
