这种方法是否正确,可以在mysql的列中找到第二个,第三个或第四个最高值

时间:2014-10-15 04:39:31

标签: mysql sql

我在mysql中有表(姓名"朋友"),我想从该表中选择第二或第三或第四最高金额(即工资)。

我正在使用这种方法:

`select * from friends order by salary desc limit 1; -- for highest salary.`

`select * from friends order by salary desc limit 1 offset 1; -- for second highest salary.`

`select * from friends order by salary desc limit 1 offset 2; -- for third highest salary.`

这个方法是正确的还是我必须使用其他逻辑方法,如。

`select * from friends where salary = (select max(salary) from friends where salary < (select max(salary) from friends)); -- for second highest salary`.
请告诉我哪种是专业方法。

2 个答案:

答案 0 :(得分:0)

偏移的限制是首选,更多的是legibale;

select * 
from friends 
order by salary desc 
limit 3,1;

答案 1 :(得分:0)

两种方法的区别在于时间复杂度

在一般意义上,排序(或按顺序执行)仅查看最高或次高,或者就时间而言是过度的。想想如果你想找到列表中最大的元素,你会想要整理整个列表并在排序后查看第一个元素,或者循环遍历列表以找到最大的元素。

没有正确的方法,这取决于你是否能够花更多的时间来获得解决方案,支持更可读的查询,这反过来又取决于数据的大小等。