假设数据如下:
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
返回正确的行(对于第一行)。似乎是数据库特定的。
答案 0 :(得分:0)
问题是由于您没有使用限制0,1引起的。虽然未提供完整查询,但有时会显示错误的结果。我建议你输入/执行完整的查询。