2012-07-16 104 views
4

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

援助,投标,值1,值2,值3,值4

的问题是,有些情况下援助匹配出价,但只有等领域的一个被填充的情况:

1,1,samedata,NULL,NULL,1
1,1,samedata,红色,NULL,NULL
1,1,samedata,空,htmldata,空

我在寻找一种显示整行数据但汇总所有值的方法s不为null,以便每个匹配的id有一行。我一直在尝试Group By和Group_Concat,但还没有找到秘密酱油。

的1行我想从上面的例子是:

1,1,samedata,红色,htmldata,1个

任何想法?

回答

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为此,我通常会在评论中注明这一点,因为它对休闲读者来说并不明显)。

0

试试这个::

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