2012-02-25 64 views
0

看看以下數據:如何「按組合」或「選擇」清除重複項?

who code info 
1 1467 1 
1 1468 2 
1 1469 3 
3 1467 5 
3 1468 4 
3 1469 7 

我需要做的,就是選擇不重複的代碼:WHO = 1,怎麼不理WHO = 3,但沒有說:WHERE誰= 3,因爲我需要做的是這樣的:

GROUP BY code 

其實我得到這樣一個結果:

1 1468 2 
3 1467 5 
3 1469 7 

我要的是:

1 1467 1 
1 1468 2 
1 1469 3 
+2

@ user975718,你能否請澄清更多關於你的問題。從你想要的,我認爲一個簡單的SELECT查詢應該足夠了:'SELECT * FROM your_table WHERE code = 1'。是什麼讓你覺得你需要一個GROUP BY CODE? – Abhay 2012-02-25 06:37:10

+0

在我之前的評論中犯了一個錯誤;查詢應該改爲說'WHERE who = 1'。對不起。 – Abhay 2012-02-25 19:07:11

回答

0

只需添加who到組,然後用WHERE過濾掉id 3.

SELECT who, code, info FROM data WHERE who != 3 GROUP BY who, code 

請注意,如果您選擇從該查詢類似info沒有被它的分組中,MySQL會給你組中的任何一行的值(不保證哪一個 - 只有在你使用MySQL的情況下;大多數數據庫引擎甚至不會讓你構建這樣的查詢!)。所以你可能想要的全部三種:

SELECT who, code, info FROM data WHERE who != 3 GROUP BY who, code, info 
+1

如果您在GROUP BY中使用全部3個字段,那麼「GROUP BY」的用法是什麼? – 2012-02-25 05:38:11

+0

@FahimParkar,選擇不同的行。例如,如果有兩行具有「1,1467,1」的「who,code,info」,它仍然只返回一行。由於OP說「沒有重複」,我想這是他們的意思。 – 2012-02-25 06:21:18