mysql中GROUP_CONCAT的使用
2017-01-17 20:02
429 查看
现在有三个表,结构如下:
三张表数据如下:
cate表:
article表:
article_extend表:
问题来了,现在通过表连接查询,查询文章id为1的文章数据,并显示文章标题,文章分类,文章name。
结果如下,出现了两条数据:
现在只想要一条结果,aname字段进行合并,如何做?
只有通过GROUP_CONCAT来实现了:
结果如下:
那么,现在我们不想通过文章id一条一条的查,我们要取全部,但如果文章name有多个的要进行合并,如何做?
结果如下:
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表:
article表:
article_extend表:
问题来了,现在通过表连接查询,查询文章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;
结果如下,出现了两条数据:
现在只想要一条结果,aname字段进行合并,如何做?
只有通过GROUP_CONCAT来实现了:
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;
结果如下:
那么,现在我们不想通过文章id一条一条的查,我们要取全部,但如果文章name有多个的要进行合并,如何做?
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;
结果如下:
相关文章推荐
- mysql非主键自增长
- mysql数据库的优化
- mysql5.5以上my.ini中设置字符集
- mysql定位慢查询
- mysql5.5以上开启慢查询
- mysql索引
- mysql数据库的主从配置读写分离
- Network Monitor 查询命令和MySQL命令
- mysql的binary、char、varchar区别
- MySQL与网页进行数据传递(下)
- Windows下MySql5.7.17更改密码时出错“ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’"
- Mysql创建用户表并利用存储过程添加100万条随机用户数据
- 一.Mysql主从复制配置
- MySQL-Join
- Mysql group_concat的反向应用如何实现?
- mysql判断两个时间段是否有交集
- mysql优化
- 设置mysql workbench的sql_mode,ONLY_FULL_GROUP_BY不起作用
- MySQL数据库order by 主键(索引) 查询慢解决方案
- mysql相关命令