【问题标题】:MYSQL: Combine duplicate rowsMYSQL:合并重复行
【发布时间】: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

有什么想法吗?

【问题讨论】:

    标签: mysql group-by duplicates group-concat


    【解决方案1】:

    一个技巧是使用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 时,我通常会在评论中注明这一点,因为这对于普通读者来说并不是很明显。)

    【讨论】:

      【解决方案2】:

      试试这个::

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        相关资源
        最近更新 更多