我的应用程序包含区域,城市,团队和用户。有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;
当然,这不会奏效。如何确保查询确保所有用户角色(帐户类型)来自同一区域?
答案 0 :(得分:6)
如果有八种类型,那么这将返回全部八种类型的区域:
select u.region
from users u
group by u.region
having count(distinct u.role) = 8;
这假设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;
答案 1 :(得分:0)
我会尝试加入所需数量的查询
Select a.region from
(SELECT users.region region FROM users WHERE users.role='System Administrator') a,
(SELECT users.region region FROM users WHERE users.role='Power User') b,
(SELECT users.region region FROM users WHERE users.role='User') c,
(SELECT users.region region FROM users WHERE users.role='Read Only') d
where a.region=b.region=c.region=d.region