首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL GROUP_CONCAT 實戰:同表分組欄位值合併為逗號分隔字串

     編輯:MySQL 綜合教學

場景

表 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 字節)
  • 大量資料聚合可能佔用大量記憶體
  • 數值型欄位會返回 BLOB,需轉字串 (參考文章 181339)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved