SELECT
e.emp_no,
sub.salary AS second_highest_salary,
e.last_name,
e.first_name
FROM
employees e
JOIN
(SELECT s1.emp_no, s1.salary
FROM salaries s1
WHERE s1.salary = (
SELECT MAX(s2.salary)
FROM salaries s2
WHERE s2.salary < (SELECT MAX(salary) FROM salaries)
)
) AS sub ON e.emp_no = sub.emp_no;
解题思路是找到除最大薪水之外的最大薪水所在行,因此可以先用SELECT MAX(salary) FROM salaries找到最大薪水,然后通过where语句找到除它之外的最大薪水,作为子表与employees表进行连接。

京公网安备 11010502036488号