获取完全等于 table 的组

Get groups that are exactly equal to a table

我有一个可以轻松分组的查询。我需要获取与另一个 table(关系)完全相同记录的组。

我在 SQL 服务器下使用 ANSI-SQL,但我接受任何实现的答案。

例如:

表 1:

Id | Value
---+------
1  |  1
1  |  2
1  |  3
2  |  4
3  |  2
4  |  3

表 2:

Value | ...
------+------
  1   | ...
  2   | ...
  3   | ...

在我的例子中,结果是:

Id |
---+
1  |

怎么想象会是这样的代码:

SELECT Table1.Id
FROM Table1
GROUP BY Table1.Id
HAVING ...? -- The group that has exactly the same elements of Table2

提前致谢!

要获得相同的集合,请使用内部联接:

SELECT Table1.Id
FROM Table1
INNER JOIN table2 ON table1.id=table2.id
GROUP BY Table1.Id
HAVING ...? -- 

您可以尝试以下方法:

select t1.Id
from Table2 t2
join Table1 t1 on t1.value = t2.value
group by t1.Id
having count(distinct t1.value) = (select count(*) from Table2)

SQLFiddle

CREATE TABLE #T1 (ID INT , [Values] INT) 插入 #T1 值 (1,1),(1,2),(1,3),(2,4) ,(2,5),(3,6)

创建 TABLE #T2 ([值] INT) 插入 #T2 值 (1),(2),(3),(4)

SELECT * 来自#T1

SELECT * 来自#T2

SELECT A.ID 从 ( SELECT ID , COUNT(DISTINCT [Values]) AS Count FROM #T1 按 ID 分组 ) A

加入 ( SELECT T1.ID, COUNT(DISTINCT T2.[Values]) 计数 来自#T1 T1 加入#t2 T2 在 T1.[值] = T2.[值] 分组依据 T1.ID )乙 在 A.ID = B.ID 和 A.Count = B.Count