第二高的薪水:为什么最简单的SQL查询往往是最聪明的
发布: (2026年1月13日 GMT+8 17:51)
1 min read
原文: Dev.to
Source: Dev.to
问题描述与示例数据
我们有一张 employee 表:
| id | name | salary | department_id |
|---|---|---|---|
| 1 | Ivan | 1000.1234 | 1 |
| 2 | Anna | 1500.1234 | 1 |
| 3 | Oleg | 2200.1234 | 2 |
| 4 | Maria | 2200.1234 | 2 |
| 5 | David | 2000.5678 | 2 |
期望结果: 2000.5678
问题陈述: 从 employee 表中找出第二高的不同工资。
关键要求: 如果不同工资的种类少于两个(例如所有员工工资相同),则返回 NULL。
这里指的不是“第二行”,而是第二高的不同值。
三种常见解法对比
方法 1:MAX() + 子查询
SELECT MAX(salary)
FROM employee
WHERE salary