我有一个类似下面的表,其中包含一组Groups
,它们包含唯一(在其内部)Values
。我想知道哪些组是其他组的完整子集。当然,小组不应该被视为自己的子集。在SQL中查找其他组的子集的组
grouptable将:
ID | Group | Value
==================
00 | A | 1
01 | A | 2
02 | A | 3
03 | B | 1
04 | B | 3
05 | C | 7
06 | D | 2
我想要什么(在Smaller
组的每个元素包含在Bigger
组):
Smaller | Bigger
================
B | A
D | A
我已经尝试了一些不同的查询,但我可以围绕如何要求Bigger
组中的每个元素都包含在Samller
组中。
我已经能够做的最好的是这个,它应该在另一个组中找到包含任意匹配Value
的组。我如何将任何变成全部?
-- Groups where G1 ⊆ G2
SELECT G1.Group, G2.Group
FROM GroupTable G1
JOIN GroupTable G2 ON G2.Group <> G1.Group
WHERE G1.Value = G2.Value
GROUP BY G1.Group, G2.Group;