我一直试图在不使用限制的情况下找到第三高的薪水。
如果我使用第二高薪
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个工资?
答案 0 :(得分:12)
尝试此查询,
SELECT *
FROM one one1
WHERE ( 3 ) = ( SELECT COUNT( one2.salary )
FROM one one2
WHERE one2.salary >= one1.salary
)
这里 WHERE(n)哟可以输入任何数字来返回最高薪水。
答案 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
);