【问题标题】:Merge 2nd column for each 1st column in MySQL合并 MySQL 中每个第一列的第二列
【发布时间】:2011-12-08 18:51:01
【问题描述】:

我的数据看起来像

ABC     1234,2134,6754,7658
XYZ     4324,5643,6754,9832,5478,0987
DEF     2938,4637,1093,6734,5632
GHI     3274
ABC     9983
DEF     1211,4782

我想要的是合并第一列中每个 ID 的第二列

ABC     1234,2134,6754,7658,9983 
XYZ     4324,5643,6754,9832,5478,0987
DEF     2938,4637,1093,6734,5632,1211,4782
GHI     3274

我的想法是以编程方式迭代第一列(已排序)中的每个 ID。继续每个 ID,直到它与下一行不匹配。这可以通过 SQL 查询来完成。我该怎么办?我有大约 100k 行。谢谢

【问题讨论】:

    标签: mysql merge


    【解决方案1】:

    我不知道它的性能如何,但 MySQL 有 an aggregate function called GROUP_CONCAT that concatenates its arguments。假设您完全组装的列不超过 1024 个字符,您可以执行以下操作:

    SELECT first_column,
           GROUP_CONCAT(second_column ORDER BY ... SEPARATOR ',')
      FROM table_name
     GROUP
        BY first_column
    ;
    

    【讨论】:

      【解决方案2】:

      您可以为此使用GROUP_CONCAT aggregate function

      例子:

      如果您作为示例提供的表名为 table1,列有 col1col2,那么实现所需结果的查询将如下所示:

      SELECT col1, GROUP_CONCAT(col2 SEPARATOR ',') FROM table1 GROUP BY col1;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        相关资源
        最近更新 更多