2011-11-02 156 views
3

我有臺這樣的SELECT DISTINCT值SQL

------------------------------------------------------------------- 
id | title | image | name | 
------------------------------------------------------------------- 
1 | xyzab | so.jpg | googl | 
2 | acbde | am.jpg | artic | 
3 | xyzab | pp.jpg | other | 

我想選擇與它獨特的或不同標題的形象和名字也。 不想重複這些值。我用這個驗證碼

SELECT DISTINCT title,image,name,id FROM `some_table` 

但這不是工作的罰款

注意:op爲工作與MySQL

+0

您運行的是什麼版本的SQL的? – Curt

+0

sql版本5.091 –

回答

5

使用DISTINCT將確保2個記錄已所有列匹配,所以這正常工作。

如果你想返回唯一的標題,你需要決定返回什麼樣的圖像和名稱。

你可以通過一個聚合函數來使用一個group來做到這一點。例如:

SELECT title, MIN(image), MIN(name), MIN(id) 
FROM `some_table` 
GROUP BY title 

但要看是什麼導致你後...

+0

好吧,讓我試試這個.. –

+1

爲什麼downvote任何人? – Curt

+0

Becaus它工作不正常。當我在測試表上執行此操作時,我得到以下內容:'acbde | am.jpg | | | | 2''xyzab | pp.jpg | googl | 1' ID爲1的條目具有圖像'so.jpg'而不是'pp.jpg'。我不認爲這是預期的效果? – dwalldorf

0

您需要指定WINNER ......換句話說,如果有重複的標題,但在其他differening數據列你需要選擇一個...

例如,你可以試試這個。

select * from 'some_table' where id in (select min(id) from 'some_table' group by title) 
+1

對不起,當我正在寫我的答案另一個得到它......我將離開它,因爲它顯示了另一種方式去追求同樣的想法 –

0

DISTINCT不適用於關鍵字之後的一個字段,而是應用於select語句中的字段。什麼你要找的是GROUP BY

SELECT title,image,name,id FROM some_table GROUP BY title

+0

你測試過執行這樣的查詢嗎?你會得到一個錯誤。 – Curt

+0

這將是沿着圖像,名稱,ID的東西,如果不在Group by子句中,需要在聚合函數中。 – Curt

+0

爲什麼我應該得到一個錯誤? – dwalldorf