如何查找记录中列中的所有值都包含在另一个表中?

时间:2020-07-07 14:52:38

标签: sql sql-server

我有这样的表

Table1

ID | Name
---------
1    Name1
2    Name2
3    Name3


Table2

ID | FindID Table1ID 
--------------------
1     1       1
2     2       1
3     1       2
4     2       2
5     1       3
6     2       3
7     3       3
8     1       4


Table3

ID
--
1
2

我需要做的是-我需要找到所有表1 Ids,它们在表2中具有所有表3的值作为FindId列的值。 例如,如果表3中有1和2,则结果应返回

Result
ID
-----
1
2
3

因为Table1.Id = 1在表2中具有1和2,与Table1.Id = 2相同,而Table1.Id = 3具有1,2,3。 Table1.Id = 4只有1,因此它不包含在结果中。

如果表3中有1,2,3-那么将仅返回Table1.Id = 3。

我尝试过类似的事情

        SELECT distinct t1.id FROM Table1 t1
        join Table2 t2 on t2.Table1Id = t1.ID
        join Table3 t3 on t3.Id = t2.FindId

但这不起作用。

1 个答案:

答案 0 :(得分:1)

如果我的理解正确,那么您希望所有table2.table1id中具有所有findId的{​​{1}}。如果是这样,聚合应该做您想要的:

table3