Problem:
Write a SQL query to get the second highest salary from the Employee table.

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

For example, given the above Employee table, the second highest salary is 200. If there is no second highest salary, then the query should return null.

Solution: 返回Employee表中第二高的Salary值,使用MySQL嵌套查询,先返回最大Salary值,再用not in过滤这个最大值,然后返回剩下记录里最大的Salary. SQL如下:

1
2
3
select max(Salary) from Employee
where Salary not in
(select max(Salary) from Employee );