1. 程式人生 > 資料庫 >mysql中GROUP_CONCAT的使用方法例項分析

mysql中GROUP_CONCAT的使用方法例項分析

本文例項講述了mysql中GROUP_CONCAT的使用方法。分享給大家供大家參考,具體如下:

現在有三個表,結構如下:

cate表:

CREATE TABLE `cate` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',`name` char(20) DEFAULT '' COMMENT '分類名',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='文章分類表';

article表:

CREATE TABLE `article` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',`title` varchar(50) DEFAULT '',`cate_id` int(11) NOT NULL DEFAULT '0' COMMENT '分類id',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='文章表';

article_extend表:

CREATE TABLE `article_extend` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,`article_id` int(10) unsigned DEFAULT '0' COMMENT '文章id',`name` varchar(255) DEFAULT '' COMMENT '音訊,圖片之類',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='附件表';

三張表資料如下:

cate表:

mysql中GROUP_CONCAT的使用方法例項分析

article表:

mysql中GROUP_CONCAT的使用方法例項分析

article_extend表:

mysql中GROUP_CONCAT的使用方法例項分析

問題來了,現在通過表連線查詢,查詢文章id為1的文章資料,並顯示文章標題,文章分類,文章name。

SELECT
	a.id AS aid,a.title AS atitle,c. NAME AS cname,ae. NAME AS aname
FROM
	article AS a
LEFT JOIN cate AS c ON a.cate_id = c.id
LEFT JOIN article_extend AS ae ON a.id = ae.article_id
WHERE
	a.id = 1;

結果如下,出現了兩條資料:

mysql中GROUP_CONCAT的使用方法例項分析

現在只想要一條結果,aname欄位進行合併,如何做?

只有通過GROUP_CONCAT來實現了:

SELECT
	a.id AS aid,GROUP_CONCAT(ae. NAME SEPARATOR '-') AS aname
FROM
	article AS a
LEFT JOIN cate AS c ON a.cate_id = c.id
LEFT JOIN article_extend AS ae ON a.id = ae.article_id
WHERE
	a.id = 1;

結果如下:

mysql中GROUP_CONCAT的使用方法例項分析

那麼,現在我們不想通過文章id一條一條的查,我們要取全部,但如果文章name有多個的要進行合併,如何做?

SELECT
	a.id AS aid,ae.allname
FROM
	article AS a
LEFT JOIN (
	SELECT
		ae.article_id,GROUP_CONCAT(ae. NAME) AS allname
	FROM
		article_extend AS ae
	GROUP BY
		ae.article_id
) AS ae ON a.id = ae.article_id
LEFT JOIN cate AS c ON a.cate_id = c.id;

結果如下:

mysql中GROUP_CONCAT的使用方法例項分析

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL查詢技巧大全》、《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》

希望本文所述對大家MySQL資料庫計有所幫助。