select max(salary) from salaries;

select max(salary) from salaries
where salary <> (select max(salary) from salaries);

select emp_no, salary
from salaries
where salary = (select max(salary) from salaries
				where salary <> (select max(salary) from salaries));

select es.emp_no, salary, last_name, first_name
from employees,
	(select emp_no, salary
	from salaries
	where salary = (select max(salary) from salaries
				where salary <> (select max(salary) from salaries))) as es
where es.emp_no = employees.emp_no;

写查询语句就是在做一道数学题,从最简单之处一层一层慢慢的揭开它神秘的面纱。

本题的思路大体就是: 1.根据salaries表检索出满足条件的emp_no,salary; 2.将salaries与employees根据emp_no内联结,检索出所有所需要的信息。

具体来讲: 1.1 检索出最高的薪水; 1.2 继续检索最高的薪水,但是此时添加条件。salary不等于上一次添加出来的最高薪水; 1.3 根据第二步检索出来的第二高的薪水,检索出对应的员工编号emp_no; 2.1 根据emp_no内联结1.1检索出来的表和employees表; 2.2 获取所有需要的值。