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

时间:2021-03-02 15:04:40

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

表结构:

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