问题遇到的现象和发生背景
有三张表,分别是t_users u、t_user_roles ur、t_roles r,一个用户可以有多个角色。我想要获取用户的所有角色,以下是我的表数据
用代码块功能插入代码,请勿粘贴截图
select
u.N_USER_ID,
(
select listagg(vc_name,',') within group ( order by n_user_id)
from
(select ur.N_USER_ID, r.vc_name
from T_USER_ROLES ur,T_ROLES r
where ur.N_ROLE_ID=r.N_ROLE_ID and ur.N_USER_ID=u.N_USER_ID)
) vc_roles
from t_users u
where u.N_USER_ID<>1;
运行结果及报错内容
我的解答思路和尝试过的方法
子查询中的u.N_USER_ID报错为无效的id,我尝试或将这个u.N_USER_ID改为定值,就能查出数据,且是正确的,比如下方的1004和1006就有两个角色,但是改成外部查询列就会报错,为什么呢?