我有两个SQL表:
表-1 (Group_Departments)
Group--------- | ---------Department_ID
G1 ---------- | ------------- 1
G1 ---------- | ------------- 43
G1 ---------- | ------------- 6
G2 ---------- | ------------- 43
G2 ---------- | ------------- 46
G3 ---------- | ------------- 1
G3 ---------- | ------------- 1
G4 ---------- | ------------- 46
G4 ---------- | ------------- 43
G4 ---------- | ------------- 1
G4 ---------- | ------------- 32表-2 (Allowed_Departments)
Department_ID
1
46
43目标结果逻辑:
查询的结果应该是:
结果
G2
G3发布于 2018-10-17 14:28:46
您可以使用HAVING和条件聚合:
SELECT [Group]
FROM Group_Departments gd
LEFT JOIN Allowed_Departments ad
ON gd.department_id = ad.department_id
GROUP BY [Group]
HAVING SUM(CASE WHEN ad.department_id IS NULL THEN 1 ELSE 0 END) = 0;或者,正如@Gordon Linoff建议的那样:
SELECT [Group]
FROM Group_Departments gd
LEFT JOIN Allowed_Departments ad
ON gd.department_id = ad.department_id
GROUP BY [Group]
HAVING COUNT(ad.department_id) = COUNT(*)https://stackoverflow.com/questions/52857241
复制相似问题