如何解决如果所有记录都存在于 sql server 的另一个表中,则返回行列表
理论上的简单查询,但我无法理解所需的语法,如果查询被调用,我不确定这种类型是什么/如何表达它,这使得谷歌很难找到解决方案。 sql Server 2014
我基本上想返回一个用户 ID 列表,如果他们的所有记录都存在于另一个表中。
示例
用户记录
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
如果我知道查询的类型,我可能可以自己找到答案
谢谢
解决方法
您可以使用 join
和 group 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 举报,一经查实,本站将立刻删除。