MySQL SELECT DISTINCT не работает должным образом - PullRequest
0 голосов
/ 06 февраля 2012

Хорошо, это действительно запутало меня.

Этот запрос возвращает ожидаемые результаты, хотя и с повторяющимися номерами car_id

SELECT car_id FROM `Updates` ORDER BY `updates`.`created` DESC

Эти 2 запроса возвращают одинаковый набор результатов:

SELECT distinct `Updates`.`car_id` FROM `Updates` ORDER BY `updates`.`created` DESC

SELECT car_id FROM `Updates` GROUP BY car_id ORDER BY `updates`.`created` DESC

См. Ниже, как они отличаются: See below though as to how they differ:

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

Не думаю, что это имеет прямое отношение к вашей проблеме, но:

SELECT DISTINCT car_id 
FROM Updates 
ORDER BY created DESC

не является допустимым стандартным синтаксисом SQL.Может быть много строк с одинаковыми car_id и разными created значениями.Какой из них следует использовать для заказа?

Возможно, вы хотите переписать запрос, чтобы он дал значимые результаты:

SELECT car_id 
FROM Updates
GROUP BY car_id 
ORDER BY MAX(created) DESC              --- or MIN(created)
                                        -- whatever suits you
1 голос
/ 06 февраля 2012

Вы заказываете по updates.created.Предположительно это означает, что каждый отдельный carid появится, но не совсем там, где вы ожидаете.Попробуйте упорядочить по carid для сравнения.

0 голосов
/ 06 февраля 2012

Хотелось бы что-то подобное:

ВЫБРАТЬ * ИЗ ОБНОВЛЕНИЙ GROUP BY car_id ORDER BY создал DESC

...