欢迎投稿

今日深度:

mysql利用group_concat()合并多行数据到一行,mysqlg

mysql利用group_concat()合并多行数据到一行,mysqlgroup_concat


假设两个表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 多行数据合并一行(根据主键)

在你第二个查询的基础上进行行转列,如果类型是动态的建议封装存储过程。在外层套一个查询,用 max(case when then ... end ) as '列名'...这种方士可以实现。
 

SQL 多行归并为一行的问题

多行转换为一行的处理.
不同的数据库,处理机制不同.

对于SQL Server 2005+版本的 使用FOR XML的方式
对于MySQL使用 GROUP_CONCAT 函数 的方式进行处理
对于Oracle使用 WMSYS.WM_CONCAT 函数 的方式进行处理

其他数据库就没研究过了......
参考资料:hi.baidu.com/...a.html
 

www.htsjk.Com true http://www.htsjk.com/Mysql/14071.html NewsArticle mysql利用group_concat()合并多行数据到一行,mysqlgroup_concat 假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系。假设b表中存在一字段name,现需要查询a表中的记录,同时获取...
相关文章
    暂无相关文章
评论暂时关闭