合并MySQL中每个第1列的第2列

时间:2011-12-08 18:51:01

标签: mysql merge

我的数据看起来像

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行。谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT aggregate function

示例:

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

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

答案 1 :(得分: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
;