MYSQL中limit不适用的场景
微信公众号:关注菜鸟解说大数据
关注可了解更多的大数据相关的内容。问题或建议,请公众号留言,或者可以浏览我的CSDN
如果你觉得我写的文章对你有帮助,欢迎关注和赞赏我[1]
目录
在特殊情况下使用limit和不用limit的区别
这是我今天在刷leetcode上的一道题时遇到的一个问题。原题地址如下:
176. Second Highest Salary
一开始我给出的答案是:
1.查得到结果的情况
1select Salary as SecondHighestSalary from Employee order by Salary desc limit 1,1;
这时候怎么也通不过去,然后我就换了一个思路,用以下方法解决这个问题,代码如下:
1select max(salary) as SecondHighestSalary from Employee where salary< (select max(salary) from Employee);
这会既然很快就通过了,具体原因不明。于是我又在自己的虚拟机上建表重新运行了一下。结果如下:
我自己虚拟机中的数据库的数据
1. select Salary as SecondHighestSalary from Employee order by Salary desc limit 1,1;
有limit的查询
1. select max(salary) as SecondHighestSalary from Employee where salary< (select max(salary) from Employee);
没有limit的查询
2.查不到结果的情况
由上面的查询结果可知,上面的两种方式都可以得到相同的结果。接下来我又把多余的两条数据删除掉这样就只剩下一条数据了。
删除数据
然后再进行上面的两种查询得到如下结果:
1. select Salary as SecondHighestSalary from Employee order by Salary desc limit 1,1;
有limit的查询
1. select max(salary) as SecondHighestSalary from Employee where salary< (select max(salary) from Employee);
没有limit的查询
至此,我才知道了,为什么第一种方法在leetcode上不能通过,而第二者可以。具体是因为什么导致这样的结果,我还没搞明白。如果有那位大佬知道深层的原理,欢迎替我解惑。
关注菜鸟解说大数据
如果你觉得到作者的文章对你有帮助,欢迎赞赏,有你的支持,公众号一定会越来越好!
公众号二维码
由上面的查询结果可知,