Return 行列表,如果所有记录都存在于 sql 服务器中的另一个 table

Return list of rows if all records exist in another table in sql server

理论上是简单的查询,但我无法理解所需的语法,不确定如果调用查询是什么类型/如何措辞,这使得 google 很难找到解决方案. SQL 服务器 2014

我基本上想要 return 一个用户 ID 列表,如果他们的所有记录都存在于另一个 table。

例子

用户

ID Name
1 User1
2 User2
3 User3
4 User4
5 User5

用户记录

ID UserId Record
100 1 50
101 1 52
102 1 55
103 2 50
104 2 52
105 2 55
106 2 60
107 3 50
108 3 55
109 3 61
110 4 50
111 4 55
112 4 60
113 5 60

查找Table

ID
50
55
60

预期结果

UserId
2
4

我希望 'Expect Results' 显示用户 ID 列表,其中每个用户的 'Lookup'(另一个 table)中的所有 ID 都出现在 'UsersResults' 中。用户“2”在 UserRecords 中有一条不在 'Lookup' 中的附加记录,但我仍然希望他们的 ID return 包含在有效结果列表中

如果我知道这是什么类型的查询,我或许可以自己找到答案

谢谢

您可以使用 joingroup by。假设您在 userrecords 中没有重复项(如您的示例数据):

select ur.userid
from userrecords ur join
     lookup lu
     on ur.record = lu.id
group by ur.userid
having count(*) = (select count(*) from lookup);

如果 userrecords 中有重复项,则使用 count(distinct record)