TableA
Name Items
A 1
A 2
A 2
A 3
A 3
B 1
B 1
B 2
B 2
C 1
C 2
C 2
C 3
TableB
Items ItemsName
1 One
2 Two
3 Three
我想列出
Name
A
C
因为A和C包含TableB中的所有项目。 B没有3。 我想我应该使用“NOT EXISTS”。
答案 0 :(得分:5)
这是一种方法:
SELECT a.Name
FROM TableB AS b
JOIN TableA as a ON b.Items = a.Items
GROUP BY a.Name
HAVING COUNT(DISTINCT b.Items) = (SELECT COUNT(DISTINCT Items) FROM TableB)
查询将TableB
的记录与TableA
的记录连接起来。使用INNER JOIN
,我们可以找到TableA
的匹配记录。
HAVING
子句检查不同Items
值的数量是否等于TableB
的总体数。仅返回与{em> a.Name
的所有 Items
值相关的TableB
个值。