mysql利用group_concat()合并多行数据到一行
2017-02-09 16:06
597 查看
把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成,需要的朋友可以参考下
假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系。假设b表中存在一字段name,现需要查询a表中的记录,同时获取存储在b表中的name信息,按照常规查询,b表中有多少记录,则会显示多少行,如果需要只显示a表记录行数,则需要把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成。
方法
例子
假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系。假设b表中存在一字段name,现需要查询a表中的记录,同时获取存储在b表中的name信息,按照常规查询,b表中有多少记录,则会显示多少行,如果需要只显示a表记录行数,则需要把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成。
方法
利用group_concat()方法,参数为需要合并的字段,合并的字段分隔符默认为逗号,可通过参数separator指定,该方法往往配合group by 一起使用。
例子
select a.*,group_concat(b.name separator '-') as name from a left join b on a.id=b.id group by a.id;
相关文章推荐
- mysql 索引
- [Mysql] 如何实现按距离排序、范围查找
- 怎么用navicat自动备份mysql数据库
- Mysql Seconds_Behind_Master 解析
- mysql学习之权限管理
- MySQL 中事务详解
- 一句话实现Mysql查询结果带行号
- MySQL使用innobackupex备份连接服务器失败的解决方法
- mysql limit 优化
- ibatis/mybatis 里mysql 查询行号,@
- mysql索引总结----mysql 索引类型以及创建
- Discuz论坛忘记登录密码,MySQL解决方法
- 【转载】实战mysql分区(PARTITION)
- EF 配置 (Sql Server, MySql)
- MySQL 使用 innobackupex 备份连接服务器失败
- MySQL主从配置
- MySQL数据库可以用任意ip连接访问的方法
- mysql还原mysqldump导出的数据时出现ERROR at line 660: Unknown command '\"'.
- 解决MySQL不能插入中文
- mysql空值null替换成指定值及REPLACE用法