Порядок MySQL возвращается в (нежелательном) случайном порядке

#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

или любой другой столбец, который вам нужен