#mysql
#mysql
Вопрос:
В моей базе данных у меня есть несколько записей, где я сортирую по тому, что оказывается нулевым значением:
| col1 | col2 |
| row1 | NULL |
| row2 | NULL |
SELECT ... ORDER BY col2
Даже если все значения одинаковы (NULL), я бы ожидал, что MySQL вернет результаты в согласованном порядке, но они, по-видимому, случайны. Я запускаю запрос сто раз, и каждый раз результаты возвращаются в другом порядке. Я не могу найти никакой документации MySQL по этому поводу. Есть ли ошибка? Или это документированная «функция»?
Комментарии:
1. Где / какова спецификация «limit», если таковая имеется?
Ответ №1:
Это ожидаемое поведение. Компонент database engine может возвращать строки в любом порядке до тех пор, пока соблюдается «Порядок по». Если вам нужна согласованность, попробуйте:
select ... order by col2, some-unique-id
Где some-unique-id — это столбец в таблице, который является уникальным.
Комментарии:
1. Хорошо, это то, что я подумал. Я могу легко добавить второе предложение order by, но я просто хотел знать, будут ли результаты использования одного предложения order by согласованными или случайными.
Ответ №2:
измените свой запрос на
выберите …. порядок по col2, col1
или любой другой столбец, который вам нужен