在mysql中运行查询时,得到了一些奇怪的结果:
SQL 1:
SELECT *
FROM location
WHERE name LIKE CONCAT('%','SZ','%')
AND `STATUS` = 1
AND location_level IN (4,3)
ORDER BY location_level;SQL 2:
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现在可以了。
发布于 2015-09-14 09:10:45
我在sqlfiddle.com上试了一下,得到了预期的结果,即1。
如果将LIMIT row_count与ORDER BY组合在一起,则MySQL在找到排序结果的第一个row_count行后立即结束排序,而不是对整个结果进行排序。*(在您的示例中,如果结果在中间没有被更改),如果使用索引进行排序,这是非常快速的。如果必须执行文件短,则在找到第一个row_count之前,将选择与查询匹配的所有行,而不带限制子句,并对其中的大部分或所有行进行排序。在找到初始行之后,MySQL不会对结果集中的任何剩余部分进行排序。
https://stackoverflow.com/questions/32560291
复制相似问题