你有一个sql查询,可以将第一个结果与第二个条件进行比较吗?

Jas*_*son 1 sql postgresql

我有一个包含地区,城市,团队和用户的应用程序.有8种默认用户类型或帐户类型(即用户,超级用户,系统管理员,只读用户等).我需要找到至少包含其中一种默认帐户类型的区域.所有这些帐户必须来自同一地区.例如:

 SELECT users.region FROM users WHERE users.role='System Administrator' 
 OR users.role='Power User' 
 OR users.role='User' 
 OR users.role='Read Only' AND users.region = users.region;
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用.如何确保查询确保所有用户角色(帐户类型)来自同一区域?

Gor*_*off 6

如果有八种类型,那么这将返回全部八种类型的区域:

select u.region
from users u
group by u.region
having count(distinct u.role) = 8;
Run Code Online (Sandbox Code Playgroud)

这假定u.role只有"默认"值.如果其他值可以进入,则使用where:

select u.region
from users u
where u.role in ('System Administrator', . . . )
group by u.region
having count(distinct u.role) = 8;
Run Code Online (Sandbox Code Playgroud)