2016-06-08 107 views
-2

當執行SQL查詢,我一直在試圖找出如下: 在這個例子中:DISTINCT一個簡單的SQL查詢

SELECT DISTINCT AL.id, AL.name 
FROM albums AL 

爲什麼有需要指定不同?我認爲Id是主鍵足以避免重複的結果。

+2

如果'ID'是一個主鍵,那麼'DISTINCT'是沒有意義的。 – Siyual

+1

1.我沒有降低你的問題。 2.如果一個列在'SELECT'集合中自然是唯一的,那麼提供'DISTINCT'不會改變結果。 – Siyual

回答

1

當您指定distinct時,您指定希望整行不同。例如,如果你有兩行:

  1. ID = 1和Name = '張三'
  2. ID = 2,名稱= '張三'

那麼你的查詢將返回兩行,因爲不同的ID值使行不同。

但是,如果您選擇只有 ID列(並且它是您的主鍵),則區別是毫無意義的。

如果你想找到的所有獨特的名字,那麼你會想:

SELECT DISTINCT AL.name 
FROM albums AL 
1

你是對的,在你的情況下,應該不需要不同的詞,因爲你要求的是id和名字。現在,爲了清楚的例子,有必要使用不同的名稱,比如說你有多個具有相同名稱的id。 Let It Be是披頭士樂隊和替換樂隊的專輯。假設您使用數據庫來寫出只包含相冊名稱的標籤。你會想要的查詢將是:

select distinct al.name 
    from albums al; 

有時你的數據庫是不完美的,它結束了一堆垃圾數據。如果該ID沒有被指定爲唯一,那麼最終可能會出現重複記錄,然後您可能希望避免在查詢結果中看到重複項。