oracle合并某一列wm_concat函数
原创 baibai 发表于:2019-11-25 14:03:40
  阅读 :170   收藏   编辑

场景

查询一个用户信息,并将该用户下的所属角色一并查出

创建测试表及数据

create table sys_user(
id int,
name varchar2(20)
);

insert into sys_user values(1,'张三');
insert into sys_user values(2,'李四');

create table sys_role(
id int,
role_name varchar2(50)
);

insert into sys_role values(1,'技术部');
insert into sys_role values(2,'运营部');

create table sys_user_role(
id int,
user_id int,
role_id int
);

insert into sys_user_role values(1,1,1);
insert into sys_user_role values(2,1,2);

查询用户及所属角色

select u.*,
(select to_char(wm_concat(r.role_name)) from sys_user_role t left join sys_role r  on (t.role_id = r.id ) where t.user_id = u.id) roles
 from sys_user u;

 1

 

wm_concat默认为COLB类型,这里我们使用to_char转为字符类型

mysql中使用group_concat(),wm_concat为oracle独有