正确做法:
#select max(salary) from salaries;#先找薪水第一多
#select max(salary) from salaries
#where salary<(select max(salary) from salaries);#再找第二多
#最后找薪水等于第二多的。
select e.emp_no,salary,last_name,first_name
from employees as e
join salaries as s
on e.emp_no = s.emp_no
where salary=(select max(salary) from salaries
where salary<(select max(salary) from salaries));
错误做法:
无group by,但select中包含聚合函数以及其他字段,那么返回的字段值与聚合函数并非一一对应的。
select e.emp_no,max(salary) as salary,last_name,first_name
from employees as e
join salaries as s
on e.emp_no=s.emp_no
where salary<(select max(salary)
from employees e join salaries s on e.emp_no=s.emp_no);返回结果:emp_no=10002,salary=74057,员工编号并不是薪水第二大的10004。

京公网安备 11010502036488号