问题

image.png
image.png

思路

  1. /*按照工资分组再排序*/
  2. SELECT emp_no, salary
  3. FROM salaries
  4. WHERE salary = (SELECT salary
  5. FROM salaries
  6. WHERE to_date = '9999-01-01'
  7. GROUP BY salary
  8. 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