2015-04-22 118 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