表 t(id, name) 有重複 id,需按 id 分組,將 name 合併:
-- 原始資料
id | name
1 | aa
1 | bb
2 | cc
2 | dd
-- 期望結果
id | names
1 | aa,bb
2 | cc,dd
SELECT id, GROUP_CONCAT(name)
FROM t
GROUP BY id;
mysql> CREATE TABLE t(id INT, name VARCHAR(20));
mysql> INSERT INTO t VALUES (1,'aa'),(1,'bb'),(2,'cc'),(2,'dd');
mysql> SELECT * FROM t;
+------+------+
| id | name |
+------+------+
| 1 | aa |
| 1 | bb |
| 2 | cc |
| 2 | dd |
+------+------+
mysql> SELECT id, GROUP_CONCAT(name) FROM t GROUP BY id;
+------+--------------------+
| id | GROUP_CONCAT(name) |
+------+--------------------+
| 1 | aa,bb |
| 2 | cc,dd |
+------+--------------------+
SEPARATOR '|':自定義分隔符ORDER BY name DESC:組內排序DISTINCT:去重GROUP_CONCAT(DISTINCT name ORDER BY name SEPARATOR '|')group_concat_max_len 限制 (預設 1024 字節)