数据库多行数据合并一行(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;
以上便是我对最近多行合并一行数据的一点点总结,如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/alicewang99/article/details/80890665