从员工表中找到第3个最高薪水的第3个记录

时间:2014-05-05 09:36:26

标签: mysql sql

我有一张员工表,其名称,部门,薪水为列。 我想让第3名员工的工资达到第3个最高类别

empl    dept    salary
sant    x   3000
temb    x   4000
porty   z   4000
xati    x   2000
tres    t   3000
werbt   z   2000
amiq    t   3000

期望的结果: amiq t 3000

查询是什么?

4 个答案:

答案 0 :(得分:1)

两种选择:

SELECT *  FROM TableName ORDER BY Salary DESC,empl LIMIT 2,1

小提琴示例here

SELECT empl,dept,salary
FROM
(SELECT T.*,@rownum := @rownum + 1 AS rank
FROM TableName T,(SELECT @rownum := 0) as R
ORDER BY T.Salary DESC,empl) as T2
WHERE rank=3

结果:

EMPL    DEPT    SALARY
amiq    t       3000

<强>解释

查询将选择排名按薪水降序排列的记录。 优势是您可以通过将n替换为n来找到第n个最高薪水(当然,由empl排序)。

请参阅SQL Fiddle中的结果。

答案 1 :(得分:0)

你可以试试这个

SELECT * FROM (SELECT * FROM table_name b ORDER BY  empl) b  
ORDER  BY  salary desc LIMIT 2,1

答案 2 :(得分:0)

SELECT *  FROM employee ORDER BY Salary DESC,empl LIMIT 2,1

Working Fiddle

答案 3 :(得分:0)

简单并排序查询

 SELECT * FROM 
    (
       SELECT * FROM <Table Name> b ORDER BY  empl desc
    ) b  
    ORDER  BY  salary desc 
    LIMIT 2,1

<强>结果: -

      empl   dept   salary
      amiq    t      3000