带有顺序和限制的MySQL查询

时间:2011-05-23 14:47:17

标签: mysql sql

假设数据如下:

table: shapes

id    type
----------------
1     Square
2     Rectangle
3     Square
4     Square

当我执行以下查询时:

SELECT `shapes`.* FROM `shapes` WHERE `shapes`.`type` = 'Square' ORDER BY shapes.id DESC LIMIT 1

我希望收到一行id:4。出乎意料的是,我收到一行id为:

对于非常奇怪的部分:如果我使用LIMIT 2执行相同的查询:

SELECT `shapes`.* FROM `shapes` WHERE `shapes`.`type` = 'Square' ORDER BY shapes.id DESC LIMIT 2

该组2中的第一行实际上是正确的行!

为了增加陌生性,我在同一个MySQL服务器中拥有该数据库的另一个副本,并为任何限制查询返回正确的行,LIMIT 1或其他。

我唯一可以解决的问题是转储和重新加载数据库,但是如果可能的话,我想先了解为什么会在采取这种行动之前先发生这种情况。

tl; dr:LIMIT 1返回错误的行。 LIMIT 2返回正确的行(对于第一行)。似乎是数据库特定的。

1 个答案:

答案 0 :(得分:0)

问题是由于您没有使用限制0,1引起的。虽然未提供完整查询,但有时会显示错误的结果。我建议你输入/执行完整的查询。