mysql中GROUP_CONCAT的使用方法實(shí)例分析
本文實(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表:
問(wèn)題來(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é)果如下:
那么,現(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é)果如下:
更多關(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ì)有所幫助。
- MySQL統(tǒng)計(jì)函數(shù)GROUP_CONCAT使用陷阱分析
- mysql group_concat()函數(shù)用法總結(jié)
- 淺談MySQL中g(shù)roup_concat()函數(shù)的排序方法
- MySQL拼接字符串函數(shù)GROUP_CONCAT詳解
- MySQL基于group_concat()函數(shù)合并多行數(shù)據(jù)
- MySQL中CONCAT和GROUP_CONCAT方法的區(qū)別詳解
- MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解
- MySQL group_concat函數(shù)使用方法詳解
- mysql中GROUP_CONCAT函數(shù)使用及遇到問(wèn)題詳解
- mysql中GROUP_CONCAT函數(shù)使用技巧及問(wèn)題詳解
- MySQL中g(shù)roup_concat函數(shù)用法小結(jié)
相關(guān)文章
Mysql數(shù)據(jù)庫(kù)的優(yōu)化詳解
這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)的優(yōu)化詳解,查詢優(yōu)化的本質(zhì)是讓數(shù)據(jù)庫(kù)優(yōu)化器為SQL語(yǔ)句選擇最佳的執(zhí)行計(jì)劃,一般來(lái)說(shuō),對(duì)于在線交易處理(OLTP)系統(tǒng)的數(shù)據(jù)庫(kù),減少數(shù)據(jù)庫(kù)磁盤(pán)I/O是SQL語(yǔ)句性能優(yōu)化的首要方法,需要的朋友可以參考下2023-07-07MySQL 5.6 & 5.7最優(yōu)配置文件模板(my.ini)
這篇文章主要介紹了MySQL 5.6 & 5.7最優(yōu)配置文件模板(my.ini),需要的朋友可以參考下2016-07-07MySQL關(guān)閉過(guò)程詳解和安全關(guān)閉MySQL的方法
這篇文章主要介紹了MySQL關(guān)閉過(guò)程詳解和安全關(guān)閉MySQL的方法,在了解了關(guān)閉過(guò)程后,出現(xiàn)故障能迅速定位,本文還給出了安全關(guān)閉MySQL的建議及方法,需要的朋友可以參考下2014-08-08在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份
備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤(pán)或陣列復(fù)制到其它的存儲(chǔ)介質(zhì)的過(guò)程,本文將給大家介紹了在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-12-12MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
本篇文章是對(duì)MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05