问题


思路
/*按照工资分组再排序*/SELECT emp_no, salaryFROM salariesWHERE salary = (SELECT salaryFROM salariesWHERE to_date = '9999-01-01'GROUP BY salaryORDER 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
