2012-02-05 86 views
0

好吧,這真的讓我感到困惑。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:

+0

返回多少行?我猜他們不會錯過,但返回結果集。按id命令檢查。 – stryba 2012-02-05 21:25:06

+0

@stryba你說得對,看來其他ID實際上是在列表中,而不是在我所指定的副本中 - ORDER BY updates.created DESC任何想法? – KieranYo 2012-02-05 22:56:20

回答

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 
+0

MAX(創建)完美工作。謝謝@ypercube! – KieranYo 2012-02-06 16:08:16

+0

保存我的一天...非常感謝 – 2015-09-02 16:04:04

1

您正在訂購updates.created。據推測,這意味着每個不同的carid會出現,只是不完全在你期望的位置。嘗試按carid進行排序以執行比較。

+0

你是對的,看起來其他ID實際上在列表中,而不是在我所指定的副本中 - 通過'updates'命令.'''' DESC 任何想法? – KieranYo 2012-02-05 21:56:37

+0

你在找什麼? – jzila 2012-02-06 05:41:52

-1

會是這樣的工作:

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