MYSQL:组合重复的行

时间:2012-07-16 20:15:53

标签: mysql group-by duplicates group-concat

我有一个问题,我需要结合一堆重复数据。我从一个从两个不同来源合并的表开始。数据的一个例子是:

aID,bID,value1,value2,value3,value4

问题是,在某些情况下,aID与bID匹配,但只填写其中一个字段:

1,1,samedata,null,null,1
1,1,samedata,red,null,null
1,1,samedata,null,htmldata,null

我正在寻找一种显示整行数据的方法,但是汇总所有非空的值,这样每个匹配的id就有一行。我一直在尝试Group By和Group_Concat,但还没有找到秘诀。

我想从上面的例子中得到的第一行是:

1,1,samedata,red,htmldata,1

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

一个技巧是使用MAXMIN,因为那些将优先于空值而不是空值:

SELECT aID,
       bID,
       MAX(value1) AS value1,
       MAX(value2) AS value2,
       MAX(value3) AS value3,
       MAX(value4) AS value4
  FROM ...
 GROUP
    BY aID,
       bID
;

(当我为此目的使用MAX时,我通常会附上注释,因为对于随意的读者来说,这并不是很明显。)

答案 1 :(得分:0)

试试这个::

Select 
aID,
bId,
value1,
value2, value3
from table 
group by CONCAT(ifnull(aID,-1),ifnull(bId)