mysql中GROUP_CONCAT的使用方法实例分析
本文实例讲述了mysql中GROUP_CONCAT的使用方法。分享给大家供大家参考,具体如下:
现在有三个表,结构如下:
cate表:
CREATETABLE`cate`( `id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT'id', `name`char(20)DEFAULT''COMMENT'分类名', PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8COMMENT='文章分类表';
article表:
CREATETABLE`article`( `id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT'id', `title`varchar(50)DEFAULT'', `cate_id`int(11)NOTNULLDEFAULT'0'COMMENT'分类id', PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8COMMENT='文章表';
article_extend表:
CREATETABLE`article_extend`( `id`int(10)unsignedNOTNULLAUTO_INCREMENT, `article_id`int(10)unsignedDEFAULT'0'COMMENT'文章id', `name`varchar(255)DEFAULT''COMMENT'音频,图片之类', PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=4DEFAULTCHARSET=utf8COMMENT='附件表';
三张表数据如下:
cate表:
article表:
article_extend表:
问题来了,现在通过表连接查询,查询文章id为1的文章数据,并显示文章标题,文章分类,文章name。
SELECT a.idASaid, a.titleASatitle, c.NAMEAScname, ae.NAMEASaname FROM articleASa LEFTJOINcateAScONa.cate_id=c.id LEFTJOINarticle_extendASaeONa.id=ae.article_id WHERE a.id=1;
结果如下,出现了两条数据:
现在只想要一条结果,aname字段进行合并,如何做?
只有通过GROUP_CONCAT来实现了:
SELECT a.idASaid, a.titleASatitle, c.NAMEAScname, GROUP_CONCAT(ae.NAMESEPARATOR'-')ASaname FROM articleASa LEFTJOINcateAScONa.cate_id=c.id LEFTJOINarticle_extendASaeONa.id=ae.article_id WHERE a.id=1;
结果如下:
那么,现在我们不想通过文章id一条一条的查,我们要取全部,但如果文章name有多个的要进行合并,如何做?
SELECT a.idASaid, a.titleASatitle, c.NAMEAScname, ae.allname FROM articleASa LEFTJOIN( SELECT ae.article_id, GROUP_CONCAT(ae.NAME)ASallname FROM article_extendASae GROUPBY ae.article_id )ASaeONa.id=ae.article_id LEFTJOINcateAScONa.cate_id=c.id;
结果如下:
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》
希望本文所述对大家MySQL数据库计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。