SQL дата заказа по проблеме - PullRequest
0 голосов
/ 13 января 2010

У меня есть таблица изображений, в которой есть 2 или более строк с одинаковой датой. Теперь я собираюсь сделать заказ по созданному параметру DESC, который работает нормально и показывает строки с той же позицией, но когда я изменяю запрос и пытаюсь снова, он показывает разные позиции .. и нет, у меня нет другого порядка по полю, поэтому я немного запутался, почему он это делает и как я могу это исправить.

Не могли бы вы помочь в этом.

Ответы [ 3 ]

5 голосов
/ 13 января 2010

Чтобы получить воспроизводимые результаты, вам нужно иметь столбцы в вашем заказе по предложению, которые вместе являются уникальными. У вас есть столбец ID? Вы можете использовать это для тай-брейка:

ORDER BY created_date DESC, id
1 голос
/ 13 января 2010

Чтобы получить согласованные результаты, вам необходимо добавить как минимум еще столбец в предложение ORDER BY. Поскольку значения в столбце create_date не являются уникальными, не существует определенного порядка. Если вы хотите, чтобы этот столбец был «уникальным», вы можете определить его как метку времени.

1 голос
/ 13 января 2010

Я подозреваю, что это происходит, потому что MySQL не получает никакой информации о порядке, кроме ORDER BY created_date DESC, поэтому он делает все, что наиболее удобно для MySQL, в зависимости от его сложной внутренней работы (кэширование, индексирование и т. Д.). Предполагая, что у вас есть уникальный ключ id, вы можете сделать:

SELECT * FROM table t ORDER BY t.created_date DESC, t.id ASC

Который будет давать вам один и тот же результат каждый раз, потому что ввод запятой в аргументах, следующих за ORDER BY, дает ему вторичное правило упорядочения, которое выполняется, когда первое правило упорядочения не создает четкого порядка между двумя строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...