我有一张名为“薪水”的表。
user_id salary
1 100
2 200
3 500
4 500
5 500
6 700
7 800
8 700
9 800
我需要从这个表中找出第三高的薪水。有时表中会出现多个记录。如何为此编写查询?请帮帮我
如果您需要获得3d 最高工资值,500您可以这样做
SELECT salary
FROM salary
GROUP BY salary
ORDER BY salary DESC
LIMIT 2, 1
输出:
| 工资 | ---------- | 500 |
这是SQLFiddel演示
获取工资等于第三高的所有记录
SELECT *
FROM salary
WHERE salary =
(
SELECT salary
FROM salary
GROUP BY salary
ORDER BY salary DESC
LIMIT 2, 1
)
输出:
| USER_ID | 工资 | -------------------- | 3 | 500 | | 4 | 500 | | 5 | 500 |
这是SQLFiddel演示
利用:
SELECT * FROM salary ORDER BY salary DESC LIMIT 2,1
这也是另一种选择
SELECT distinct salary
FROM salary
ORDER BY salary DESC
LIMIT 2, 1
选择所有记录:
select * from salary where salary = (
SELECT distinct salary
FROM salary
ORDER BY salary DESC
LIMIT 2, 1
)