数据库多行数据合并一行(sqlserver、Oracle、Mysql)
我们日常查询数据时,经常会有将查询到的数据按照某一列分组显示(合并多行数据),比如:
表结构:
create table t_user_course(username varchar(32),coursename varchar(100));
需要将以上数据按照用户名分组,所选课程列不同项之间用逗号隔开,在一行中显示,效果如下:
以下分别总结了sqlserver、Oracle、MySQL数据的处理SQL:
1.sqlserver:
SELECT username, coursename= ( STUFF( (SELECT ',' + coursename FROM t_user_course WHERE username= A.username FOR xml path('') ),1,1,'' ) ) FROM t_user_course A GROUP by cm_pk1;
2.Oracle(适用于oracle 12c以下版本)
select username,wm_concat(to_char(coursename)) from t_user_course group by username;
3.Mysql
select username,group_concat(coursename Separator ',') as coursename from t_user_course group by username;
---------------------
作者:alicewang99
来源:CSDN
原文:https://blog.csdn.net/alicewang99/article/details/80890665