mysql查询 - 在&中使用按顺序排列限制在一起

时间:2015-09-14 08:27:22

标签: mysql sql

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 2limit部分。

执行结果:

  
      
  • Sql 11行,
  •   
  • Sql 20
  •   

问题:

我希望Sql 2也应该得到结果,但它没有,任何想法?

@Update:

windows上的mysql似乎已经很老了,我没能阻止它,似乎崩溃了,所以我卸载了它,然后下载mysql5.6,并安装好了,现在2 sql的工作原理是一样的。

对于无意义的问题,我们深表歉意。使用mysql5.6现在可以了。

1 个答案:

答案 0 :(得分:2)

我在sqlfiddle.com上尝试了,并得到了预期的结果,即1。 我也浏览了mySQL文档并找到了

  

如果你   将 LIMIT row_count ORDER BY 结合使用, MySQL尽快结束排序   因为它找到了排序结果的第一个row_count行,而不是   比排序整个结果。****(在你的情况下它应该返回1,如果在某种程度上结果没有在中间改变)如果使用索引完成排序,   这非常快。如果必须完成一个filesort,那么所有的行都匹配   选择没有LIMIT子句的查询,以及大部分或全部   在找到第一个row_count之前排序。最初之后   已找到行,MySQL不会对结果的任何其余部分进行排序   设置