这可能是一个非常简单的问题,但没有找到完美的答案。 查询是找到第二高的薪水,这可以通过使用 max 和 limit 两者来完成..
使用 MAX
select max(salary) from table1 where
salary < (select max(salary) from table1);
使用限制
select salary from table1 where
salary < (select max(salary) from table1)
order by salary desc
limit 1;
考虑到有 1000 条记录,哪个查询会更好且耗时更少。
提前致谢。
最佳答案
这两种查询都不是解决此问题的正确方法。您从所有记录中薪水小于 MAX(salary) 的记录中获得 MAX(salary)。换句话说,第二高的薪水。这样做的方法就是这样:
SELECT salary FROM table1 ORDER BY salary DESC LIMIT 1,1
如果你真的想要最大,就去做
SELECT MAX(salary) FROM table1
这里不需要子查询。无论如何,请确保您已经为 salary 列建立了索引,否则无论您如何运行查询都会很慢。
关于mysql - max vs limit 哪个更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745973/