2015-04-22 30 views
0

我需要一個SQL語句,它將基於兩列的串聯派生出唯一行的列表。SQL:根據兩列的連接獲取唯一行

給定這組數據,我想要結果刪除重複的行,其中重複被定義爲Column1和Column2的串聯。

事情:

ID Column1 Column2  Column3 
1  a   z    L 
2  b   y    G 
3  b   y    G 
4  a   y    H 
5  a   z    L 

這是我想出了:

SELECT DISTINCT (Column1 || Column2) FROM things 

結果:

az 
by 
ay 

這工作得很好,但它只能得出唯一的一個列表Column1和Column2的級聯,

我需要的欄3返回,以及,如:

Column1 Column2 Column3 
    a   z   L 
    b   y   G 
    a   y   H 

這不起作用:

SELECT DISTINCT (Column1 || Column2), Column3 FROM things 

,因爲它比需要更多的返回行。

我該如何構建一個SQL語句來基於兩列的連接來派生唯一行的所需結果? Column3是否不唯一併不重要。

+1

如果我理解正確,拼接是可以避免的使用羣體。爲什麼不只是GROUP BY? – Biscuits

回答

0

,如果你不關心的Column3價值觀,他們怎麼來的,你可以通過

select 
Column1, 
Column2, 
Column3 
from things 
group by Column1,Column2 
+0

您可能想丟失Column3以使其工作 – Biscuits

2

如果你只是想爲Column3任意值:

select column1, column2, min(Column3) 
from table t 
group by column1, column2; 

你可以使用group_concat()讓所有的值。

+0

您能否提供一個group_concat()及其結果的例子? – dtburgess

相關問題