我有一個類似下面的表,其中包含一組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;