从限额第二高的所有工资取得

时间:2013-12-28 16:02:45

标签: mysql

我发现使用order by with limit来从数据库中获取第二高的工资。可以从大数据中提取数据库性能,而不是使用子查询。我想知道如何从第二个获取所有工资最高薪水。我创建了像& amp; db name = one

id                   salary
1                    50
2                    20
3                    70
4                    40
5                    85

现在只找到第二高薪

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

找到第二,第三和第四的工资

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

如何在不知道第二个限制值的情况下从第二高位开始获取所有薪水。

感谢

4 个答案:

答案 0 :(得分:1)

只需使用非常非常大的价值:

select salary
from one
order by salary desc
limit 99999999 offset 1;

或者,您可以计算它:

select salary
from one
where salary < (select min(salary) from one)

使用one(salary)上的索引时,这两种方法都会运行得更快。

而且,两者之间存在细微差别。第一个将返回第二个薪水,即使等于最高薪水。第二个版本将返回第二高薪,无论重复多少。

答案 1 :(得分:1)

您只需将查询用作

即可
select salary from one
where salary > (select min(salary) from one)

答案 2 :(得分:0)

工作正常
select salary from one
where salary < (select max(salary) from one)

但是如何仅使用限制?

答案 3 :(得分:0)

使用mysql的偏移功能:

由于您要选择从第2高到最后的工资,您可以使用以下查询:

select salary from one order by salary desc limit 18446744073709551615 offset 1

PS:18446744073709551615 = 2 ^ 64-1(参考Mysql Offset Infinite rows