微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果所有记录都存在于 sql server 的另一个表中,则返回行列表

如何解决如果所有记录都存在于 sql server 的另一个表中,则返回行列表

理论上的简单查询,但我无法理解所需的语法,如果查询调用,我不确定这种类型是什么/如何表达它,这使得谷歌很难找到解决方案。 sql Server 2014

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

示例

用户

ID 姓名
1 用户 1
2 用户 2
3 用户 3
4 用户 4
5 User5

用户记录

ID 用户 ID 记录
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

查找表

ID
50
55
60

预期结果

用户 ID
2
4

我希望“预期结果”显示用户 ID 列表,其中“查找”(另一个表)中的所有 ID 都出现在每个用户的“用户结果”中。用户“2”在 UserRecords 中有一条不在“Lookup”中的附加记录,但我仍然希望在有效结果列表中返回他们的 Id

如果我知道查询的类型,我可能可以自己找到答案

谢谢

解决方法

您可以使用 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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。