MYSQL:合并重复行
Posted
技术标签:
【中文标题】MYSQL:合并重复行【英文标题】:MYSQL: Combine duplicate rows 【发布时间】:2012-07-15 17:55:40 【问题描述】:我有一个问题,我需要合并一堆重复的数据。我从一个从两个不同来源合并的表开始。数据示例如下:
aID、bID、value1、value2、value3、value4
问题是在某些情况下,aID 与 bID 匹配,但仅填写了其他字段之一:
1, 1, 相同数据, null, null, 1 1、1、samedata、红色、空、空 1, 1, samedata, null, htmldata, null
我正在寻找一种方法来显示整行数据,但汇总所有非空值,以便每个匹配的 id 有一行。我一直在尝试 Group By 和 Group_Concat,但还没有找到秘诀。
我想从上面的例子中得到的第一行是:
1, 1, 相同数据, 红色, htmldata, 1
有什么想法吗?
【问题讨论】:
【参考方案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
时,我通常会在评论中注明这一点,因为这对于普通读者来说并不是很明显。)
【讨论】:
【参考方案2】:试试这个::
Select
aID,
bId,
value1,
value2, value3
from table
group by CONCAT(ifnull(aID,-1),ifnull(bId)
【讨论】:
以上是关于MYSQL:合并重复行的主要内容,如果未能解决你的问题,请参考以下文章