问题
思路
/*按照工资分组再排序*/
SELECT emp_no, salary
FROM salaries
WHERE salary = (SELECT salary
FROM salaries
WHERE to_date = '9999-01-01'
GROUP BY salary
ORDER BY salary DESC LIMIT 1,1);
/*错误答案*/
SELECT emp_no, salary
FROM salaries
WHERE to_date = '9999-01-01'
GROUP BY salary
ORDER BY salary DESC LIMIT 1,1;
如果第二名不止一个人,这个只能返回第二名中的第一个,因为group by之后只会返回一个salary,
对应的也只有一个emp_no,如果这个salary对应了不止一个emp_no这种写法只会返回其中的第一个。
正确的方法是把查询到的salary作为子查询的条件,这样主查询会返回所有等于第二名salary的emp_no