在没有限制的情况下在mysql中找到第三高的薪水

时间:2014-04-04 05:57:36

标签: mysql

我一直试图在不使用限制的情况下找到第三高的薪水。

如果我使用第二高薪

SELECT salary FROM table WHERE salary < ( SELECT MAX( salary ) order by salary desc

找到第3个最高限额使用

select salary from one order by salary desc limit 3,1

现在如何在不使用限制的情况下找到第n个工资?

3 个答案:

答案 0 :(得分:12)

尝试此查询,

   SELECT *
   FROM one one1
   WHERE ( 3 ) = ( SELECT COUNT( one2.salary )
                   FROM one one2
                   WHERE one2.salary >= one1.salary
                 )

这里 WHERE(n)哟可以输入任何数字来返回最高薪水。

检查 Demo SQLFiddle

答案 1 :(得分:3)

用变量怎么做? 只是想知道为什么你不想使用LIMIT

SELECT salary
FROM
(
  SELECT @rn := @rn + 1 rn,
       a.salary
  FROM tableName a, (SELECT @rn := 0) b
  ORDER BY salary DESC
) sub
WHERE sub.rn = 3

答案 2 :(得分:0)

试试这个

SELECT *
FROM table t1
WHERE (3) = (
               SELECT COUNT(DISTINCT(t2.Salary))
               FROM table t2
               WHERE t2.Salary >= t1.Salary
               );