- 表 1 名称
- 表 2 服务
如果我对两个表进行简单的选择,我会得到如下列表:
- 名称1 服务 X
- 名称2 服务 X
- 名称2 服务 X
- 名称2 服务Y
- 名称 3 服务 Y
- 名称3 服务 X
我想将列表限制为仅拥有服务 X 和 Y 的人员,每个名称返回一个(不同选择)。
答案1
实现此目的的一种方法是计算用户拥有多少个不同的 X 或 Y 服务,然后仅返回具有两个(即 - 两者)的服务:
SELECT n.name
FROM names n
JOIN services s ON n.user_id = s.user_id
WHERE s.name IN ('X', 'Y'Y)
GROUP BY names.name
HAVING COUNT(DISTINCT s.name) = 2