MYSQL: 合并重复行

4
我有一个问题,需要将一堆重复的数据合并。我从两个不同的来源合并了一个表格作为起点。数据示例如下:
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个回答

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接