我的数据看起来像
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行。谢谢
答案 0 :(得分:1)
您可以使用GROUP_CONCAT aggregate function。
示例:
如果您作为示例提供的表名为table1
,其列col1
和col2
,那么获得所需结果的查询将如下所示:
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
;