首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL GROUP_CONCAT 將多行資料合併為單一字串完整教學

     編輯:MySQL 資料庫相關知識

當需要將多筆記錄的某個欄位值合併為一條字串(如標籤聚合、URL 串聯)時,MySQL 內建的 GROUP_CONCAT 函數是最高效的解決方案。本文透過實際範例示範基本用法、自訂分隔符與分組應用。

一、測試資料準備

CREATE TABLE IF NOT EXISTS `tet` (
    `id` INT(11) NOT NULL,
    `name` VARCHAR(255) NOT NULL,
    `url` VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tet` (`id`, `name`, `url`) VALUES
(1, '百度', 'https://www.baidu.com'),
(0, 'google', 'https://www.google.com.hk'),
(3, '400電話', 'https://www.jb51.net');

二、基本用法:全表合併

SELECT GROUP_CONCAT(name) AS name
FROM tet
WHERE 1 = 1
LIMIT 0, 30;

結果: 百度,google,400電話

三、自訂分隔符

SELECT GROUP_CONCAT(url SEPARATOR ' @ ') AS url
FROM tet
WHERE 1 = 1
LIMIT 0, 30;

結果: https://www.baidu.com @ https://www.google.com.hk @ https://www.jb51.net

四、搭配 GROUP BY 分組合併

SELECT GROUP_CONCAT(name) AS name
FROM tet
WHERE 1 = 1
GROUP BY id
LIMIT 0, 30;

結果: 每組一行(此處 id 唯一,故各自一行)
google
百度
400電話

五、進階參數與限制

  • 排序:GROUP_CONCAT(name ORDER BY name DESC)
  • 去重:GROUP_CONCAT(DISTINCT name)
  • 長度限制:預設最大 1024 位元組,可透過 SET SESSION group_concat_max_len = 1000000; 調大。
  • NULL 值:自動忽略 NULL,不出現在結果中。

六、實務應用場景

  1. 文章標籤聚合顯示
  2. 多圖片 URL 串聯存儲
  3. 一對多關聯資料扁平化匯出
  4. 報表欄位值清單生成

GROUP_CONCAT 讓原本需在應用層迴圈處理的字串聚合下推至資料庫層,大幅簡化程式碼並提升效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved