在postgresql

时间:2017-09-28 07:30:15

标签: sql postgresql

我的查询如下:

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

我该怎么做?

1 个答案:

答案 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)