数据库多行数据合并一行(sqlserver、Oracle、Mysql)

时间:2021-12-21 22:00:37

我们日常查询数据时,经常会有将查询到的数据按照某一列分组显示(合并多行数据),比如:

表结构:

create table t_user_course(username varchar(32),coursename varchar(100));

数据库多行数据合并一行(sqlserver、Oracle、Mysql)

需要将以上数据按照用户名分组,所选课程列不同项之间用逗号隔开,在一行中显示,效果如下:

数据库多行数据合并一行(sqlserver、Oracle、Mysql)

以下分别总结了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