本文實(shí)例講述了mysql中GROUP_CONCAT的使用方法。分享給大家供大家參考,具體如下:
現(xiàn)在有三個(gè)表,結(jié)構(gòu)如下:
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='附件表';
三張表數(shù)據(jù)如下:
cate表:
article表:
article_extend表:
問題來(lái)了,現(xiàn)在通過(guò)表連接查詢,查詢文章id為1的文章數(shù)據(jù),并顯示文章標(biāo)題,文章分類,文章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;
結(jié)果如下,出現(xiàn)了兩條數(shù)據(jù):
現(xiàn)在只想要一條結(jié)果,aname字段進(jìn)行合并,如何做?
只有通過(guò)GROUP_CONCAT來(lái)實(shí)現(xiàn)了:
SELECT
a.id AS aid,
a.title AS atitle,
c. NAME AS cname,
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;
結(jié)果如下:
![](/d/20211018/1c1507e24b7777757fa5d315178b6269.gif)
那么,現(xiàn)在我們不想通過(guò)文章id一條一條的查,我們要取全部,但如果文章name有多個(gè)的要進(jìn)行合并,如何做?
SELECT
a.id AS aid,
a.title AS atitle,
c. NAME AS cname,
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;
結(jié)果如下:
![](/d/20211018/65ff9d9ae96e91348099dfc461594900.gif)
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
您可能感興趣的文章:- python3 中的字符串(單引號(hào)、雙引號(hào)、三引號(hào))以及字符串與數(shù)字的運(yùn)算
- 如何修改Mysql中g(shù)roup_concat的長(zhǎng)度限制
- 在MySQL concat里面使用多個(gè)單引號(hào),三引號(hào)的問題