1

我有一张名为“薪水”的表。

  user_id salary
    1          100
    2          200
    3          500
    4          500
    5          500
    6          700
    7          800
    8          700
    9          800 

我需要从这个表中找出第三高的薪水。有时表中会出现多个记录。如何为此编写查询?请帮帮我

4

3 回答 3

4

如果您需要获得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演示

于 2013-08-06T08:21:01.073 回答
1

利用:

SELECT * FROM salary ORDER BY salary DESC LIMIT 2,1
于 2013-08-06T08:14:53.613 回答
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
)
于 2013-08-06T08:30:01.033 回答