如何找到列的第n个最高值?

时间:2010-02-24 06:26:59

标签: mysql

是否有类似的命令:

  • 2nd highest salary from tbl_salary

  • 4th highest salary from tbl_salary

我见过:

select salary
from tbl_salary t
where &n = (
    select count(salary) 
    from(
        select distinct salary
        from tbl_salary
    )where t.salary<=salary
);

它是如何工作的?

还有其他简单的方法可以获得结果吗?

7 个答案:

答案 0 :(得分:14)

如果是基本查询,那么只需使用LIMIT:

-- get the 4th highest salary
SELECT salary FROM tbl_salary
ORDER BY salary DESC
LIMIT 3,1

答案 1 :(得分:7)

select * from employee order by salary desc limit 1,1

说明:limit x,y

  • x:要从中开始显示记录的行偏移量。对于第n个记录,它将是n-1。
  • y:您要显示的记录数。 (在这种情况下总是1)

答案 2 :(得分:6)

//表格的最高薪水

select salary from table order by salary desc limit 0,1

//获得第二高薪

select salary from table order by salary desc limit 1,1

使用此查询,您可以从表格中获得第n个工资....

答案 3 :(得分:4)

这是获得第n个最高值

结果的一种非常简单的方法

把n = 2来获得第二高的薪水 pur n = 4得到第四高薪 等等...

这是查询
如果n = 2

select salary from tbl_salary e1
where 2 = (
select distinct(count(salary))
from tbl_salary e2
where e1.salary< e2.salary
)

祝你好运

答案 4 :(得分:2)

您可以使用限制条款来执行此操作:

select * from tbl_salary order by salary desc limit 2,1;

答案 5 :(得分:2)

我确信有更好的方法可以做到这一点,但是:

SELECT salary FROM tbl_salary ORDER BY salary DESC LIMIT n,1

其中n是你想要的位置 - 1(即获得第二高的薪水,这将是LIMIT 1,1)

答案 6 :(得分:1)

通过sal desc limit 1,1

从emp命令中选择sal