我在postgres尝试了如下查询:

select * from user u join
    user_func uf on u.pk = uf.user_pk
where uf.functions in ('UPDATE_MODEL', 'UPDATE_USER')
            and u.perfil in ('ADMIN', 'MANAGER');

但这会返回UPDATE_MODEL和UPDATE_USER中的任何匹配项,我只想要所有匹配项,当USER_func中有两个函数时。你能帮我吗?谢谢。
例如。用户id=1在User_func中只有UPDATE_MODEL,它出现在结果中,这对我来说是错误的。
用户id=2也出现在结果中,但它是正确的,因为它具有所有函数(“UPDATE_MODEL”、“UPDATE_user”)。

最佳答案

select * from user u
join user_func uf on u.pk = uf.user_pk
join user u2 on u.id = u2.id
join user_func uf2 on u2.pk = uf2.user_pk
where uf.functions = 'UPDATE_MODEL'
AND  uf2.functions = 'UPDATE_USER'
AND u.perfil in ('ADMIN', 'MANAGER');

09-07 15:01