oracle的写法,一个人多个角色取最高权限的角色

权限大小: 管理员>用户主管>用户经理

比如

用户A  有3个角色

用户A  管理员

用户A  用户主管

用户A  用户经理

结果→

用户A 管理员

FineReport yunliwuli 发布于 2022-12-14 16:22 (编辑于 2022-12-14 16:23)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
1659491276Lv2见习互助
发布于2022-12-14 16:40

看看这个方法能不能帮助你打开思路解决问题:

with t1 as (

select '用户A' as user_name,'管理员' as role_name,'123' as other from dual union all

select '用户A' as user_name,'用户主管' as role_name,'456' as other from dual union all

select '用户A' as user_name,'用户经理' as role_name,'789' as other from dual

),

t2 as (

select '权限大小第1' as role_order,'管理员' as role_name from dual union all

select '权限大小第2' as role_order,'用户主管' as role_name from dual union all

select '权限大小第3' as role_order,'用户经理' as role_name from dual

),

t3 as (

select t1.user_name,

       t1.role_name,

       t1.other,

       t2.role_order,

       row_number() over(partition by t1.user_name order by t2.role_order asc) as rn

  from t1 left join t2 on (t2.role_name = t1.role_name)

)

select * from t3 where t3.rn = 1;

最佳回答
0
CD20160914Lv8专家互助
发布于2022-12-15 08:24

你这个用汉字举例,说得有问题,有三个角色,然后知道是管理员,但是假如另一个用户的角色是:    用户主管,用户总监,用户总经理,,用汉字判断不了哪一个角色是最高的呀。你得有一个对照的表才可以。至少要有一个表里面可以标识出来,这样查询的时候就可以判断

  • 3关注人数
  • 362浏览人数
  • 最后回答于:2022-12-15 08:24
    请选择关闭问题的原因
    确定 取消
    返回顶部