我在oracle数据库中定义了一组数据库角色。说
我有一些用户被授予了所有角色,而有些则没有 无论哪种方式,所有用户都将获得至少一个授予他们的角色。
我的目标是确定所有不具有UPDATER和BYPASSER角色的用户
select grantee from dba_role_privs
where granted_role not in ('UPDATER','BYPASSER')
上面的代码列出了DB中所有可用的用户,因为所有用户都至少具有授予他们的角色之一。
如何重新构造查询以获得所需的输出?
答案 0 :(得分:1)
您需要this.selected.forEach(obj => {
array.push(obj.id);
});
并在group by grantee
子句中添加条件:
HAVING
这将返回同时没有select grantee
from dba_role_privs
group by grantee
having sum(
case
when granted_role in ('UPDATER','BYPASSER') then 1
else 0
end
) < 2
和'UPDATER'
角色的用户。
如果您希望没有这些角色的用户,请将条件更改为'BYPASSER'
而不是= 0
。