SQL:基于两列的串联获取唯一行

时间:2015-04-22 16:27:17

标签: mysql 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的唯一串联列表,

我还需要返回Column3,如:

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

这不起作用:

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

因为它返回的行数多于所需的行数。

如何根据两列的串联构造一个SQL语句来派生唯一行的所需结果? Column3不是唯一的并不重要。

2 个答案:

答案 0 :(得分:2)

如果您只想要Column3的任意值:

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

您可以使用group_concat()获取所有值。

答案 1 :(得分:0)

如果你不关心Column3他们是怎么来的,你可以使用group by

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