我有一个问题,我需要结合一堆重复的数据.我从一个从两个不同来源合并的表开始.数据的一个例子是:
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
有任何想法吗?
解决方法:
一个技巧是使用MAX或MIN,因为那些将优先于空值而不是空值:
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时,我通常会附上注释,因为它对于随意的读者来说并不是很明显.)