Предположим, данные как:
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
Я ожидаю получить строку с идентификатором: 4. Неожиданно я получаю строку с идентификатором: 1.
Для действительно странной части: если я выполню тот же запрос с 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
возвращает правильную строку (для первой). Кажется, для конкретной базы данных.