我的查询如下:
SELECT id, type, name
FROM users
这给出了结果:
1 member jack
2 member sarah
3 manager ron
我想修改type
manager
仅向具有hr
角色的用户展示的查询。
基本上hr用户应该看到:
1 member jack
2 member sarah
3 manager ron
非小时用户应该看到
1 member jack
2 member sarah
我有一个布尔查询,如果用户有hr角色,则给出真假值:
select pg_has_role("current_user"(), 'hr'::name, 'MEMBER'::text)
但似乎无法将其集成到select查询中以便正确过滤行。
我正在尝试像
这样的事情SELECT id,type,name
FROM users
WHERE case when select pg_has_role("current_user"(), 'hr'::name,
'MEMBER'::text) then ___________ else _______________ end
我该怎么做?
答案 0 :(得分:1)
您可以尝试以下查询(在WHERE中使用pg_has_role时不需要选择)
select id,type,name
from users
WHERE type NOT IN (
CASE WHEN pg_has_role("current_user"(), 'hr'::name, 'MEMBER'::text)
THEN ''
ELSE 'manager' END)