MySQL SELECT DISTINCT的行为不符合预期

时间:2012-02-05 21:14:48

标签: mysql select distinct

好的,这让我很困惑。

此查询返回预期结果,但重复的car_id数字

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

这两个查询返回相同的结果集:

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 个答案:

答案 0 :(得分:1)

您按updates.created订购。据推测,这意味着每个不同的carid都会出现,而不是你想要的那个。尝试按carid排序以执行比较。

答案 1 :(得分:1)

我不认为这与您的问题严格相关,但是:

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

答案 2 :(得分:-1)

会不会像这样的工作:

SELECT * FROM更新GROUP BY car_id ORDER BY创建DESC