你能有一个 sql 查询来比较第一个结果和第二个条件吗?

Can you have an sql query that compares the first result with a second condition?

我有一个包含地区、城市、团队和用户的应用程序。有 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;

当然,这是行不通的。我如何确保查询确保所有用户角色(帐户类型)都来自同一区域?

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

select u.region
from users u
group by u.region
having count(distinct u.role) = 8;

这假设 u.role 只有 "default" 值。如果其他值可以进去,那就用where:

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

我会尝试加入所需数量的查询

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