MYSQL中limit不适用的场景

微信公众号:关注菜鸟解说大数据
关注可了解更多的大数据相关的内容。问题或建议,请公众号留言,或者可以浏览我的CSDN
如果你觉得我写的文章对你有帮助,欢迎关注和赞赏我[1]

目录

在特殊情况下使用limit和不用limit的区别

1.查得到结果的情况

2.查不到结果的情况

在特殊情况下使用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);

这会既然很快就通过了,具体原因不明。于是我又在自己的虚拟机上建表重新运行了一下。结果如下:

MYSQL中limit不适用的场景

我自己虚拟机中的数据库的数据

1. select Salary as SecondHighestSalary from  Employee order by Salary desc limit 1,1;

MYSQL中limit不适用的场景

有limit的查询

1.  select max(salary) as SecondHighestSalary from Employee where salary< (select max(salary) from Employee);

MYSQL中limit不适用的场景

没有limit的查询

2.查不到结果的情况

由上面的查询结果可知,上面的两种方式都可以得到相同的结果。接下来我又把多余的两条数据删除掉这样就只剩下一条数据了。

MYSQL中limit不适用的场景

删除数据


然后再进行上面的两种查询得到如下结果:

 

1. select Salary as SecondHighestSalary from  Employee order by Salary desc limit 1,1;

MYSQL中limit不适用的场景

有limit的查询

1. select max(salary) as SecondHighestSalary from Employee where salary< (select max(salary) from Employee);

MYSQL中limit不适用的场景

没有limit的查询


至此,我才知道了,为什么第一种方法在leetcode上不能通过,而第二者可以。具体是因为什么导致这样的结果,我还没搞明白。如果有那位大佬知道深层的原理,欢迎替我解惑。

关注菜鸟解说大数据

如果你觉得到作者的文章对你有帮助,欢迎赞赏,有你的支持,公众号一定会越来越好!

MYSQL中limit不适用的场景

公众号二维码


由上面的查询结果可知,