我在一個MySQL表使用DISTINCT得到了一個神祕的行爲,並不能算出它不會工作:的MySQL DISTINCT當某些列選擇
SELECT DISTINCT `deal_hash`,`city_name`
FROM `a`
WHERE `city_name` = 'b'
...會告訴我有期望的輸出DISTINCT on deal_hash。我也可以在任何其它列添加到選擇,它會工作只有在兩種情況下DISTINCT將失敗
SELECT DISTINCT `deal_hash`,`deal_link`
FROM `a`
WHERE `city_name` = 'b'
和
SELECT DISTINCT `deal_hash`,`loaded_at`
FROM `a`
WHERE `city_name` = 'b'
deal_link
是一個varchar(255)和loaded_at一個INT(20) 。
'distinct'適用於所有列在'select'名單不只是第一個。這是你的困惑的根源嗎?如果不是,請解釋「DISTINCT將會失敗」的含義。 – 2011-04-10 00:26:58
'DISTINCT'顯示不同的**行**。 PostgreSQL是我所知道的支持'DISTINCT ON'的唯一DB,應用於特定的列。 – 2011-04-10 00:29:25
謝謝你正是這個問題,沒有意識到DISTINCT的完整行爲,如果現在有人發佈這個答案,我會接受:) – kritop 2011-04-10 00:40:06