首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql查询-使用in & order by和limit

问mysql查询-使用in & order by和limit
EN

Stack Overflow用户
提问于 2015-09-14 08:27:22
回答 1查看 137关注 0票数 2

在mysql中运行查询时,得到了一些奇怪的结果:

SQL 1:

代码语言:javascript
复制
 SELECT *
 FROM location
 WHERE name LIKE CONCAT('%','SZ','%')
   AND `STATUS` = 1
   AND location_level IN (4,3)
 ORDER BY location_level;

SQL 2:

代码语言:javascript
复制
 SELECT * 
 FROM location
 WHERE name LIKE CONCAT('%','SZ','%')
   AND `STATUS` = 1
   AND location_level IN (4,3)
 ORDER BY location_level
 LIMIT 2;

2 sql之间唯一的区别是Sql 2有一个limit部分。

执行结果:

  • Sql 1有1行,
  • Sql 2有0行

问题:

我希望Sql 2也能得到结果,但它没有,有什么想法吗?

@Update:

windows上的mysql似乎很旧,我没有停止它,它似乎崩溃了,所以我卸载它,然后下载mysql5.6,然后安装,现在2 sql工作一样。

抱歉,这是无谓的问题。用mysql5.6现在可以了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 09:10:45

我在sqlfiddle.com上试了一下,得到了预期的结果,即1。

如果将LIMIT row_count与ORDER BY组合在一起,则MySQL在找到排序结果的第一个row_count行后立即结束排序,而不是对整个结果进行排序。*(在您的示例中,如果结果在中间没有被更改),如果使用索引进行排序,这是非常快速的。如果必须执行文件短,则在找到第一个row_count之前,将选择与查询匹配的所有行,而不带限制子句,并对其中的大部分或所有行进行排序。在找到初始行之后,MySQL不会对结果集中的任何剩余部分进行排序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32560291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档