sql - 获取在sql server中以逗号分隔的字符串传递所有ID的所有记录
问题描述
我有两张桌子:一张是导师,另一张是TutorSubject。现在我想得到所有那些以逗号分隔的字符串传递所有科目的导师。例如,下面是我在下面的查询中使用的数据截图:
Select * from TutorSubject where SubjectId in (92, 1, 2, 91)
输出是:
现在我想要得到的是:我想要得到所有记录或所有拥有所有这些 subjectIds 的导师。意味着特定的 Tutor 应该将所有主题都以字符串形式传递。根据上面的截图结果。我应该只找一位 id 为:31 的导师。
解决方案
如果您想要所有科目的导师,您可以使用group by
and having
:
Select tutorid
from TutorSubject
where SubjectId in (92, 106, 1, 2, 91)
group by tutorid
having count(*) = 5; -- 5 is the length of the string
如果你想传递这个:
with s as (
select convert(int, value) as subjectid
from string_split(@s)
)
select tutorid
from tutorsubject ts join
s
on ts.subjectid = s.subjectid
group by tutorid
having count(*) = (select count(*) from s);
推荐阅读
- neo4j - 使用 Neo4j/Cypher 查找选定子图的所有叶子
- c++ - Windows 剪贴板不会保留 ASCII 字符
- oauth - 谷歌认证总是要求授权
- c# - C# 代码中的内存泄漏
- algorithm - 贪心算法的实现方式
- javascript - 使用 webpack 加载独立的 js 库
- c - 为什么这个语句会在 gcc 中产生链接器错误?
- javascript - Java 到 JavaScript (JSON):如何通过引用恢复连接?
- javascript - 如何使用 React 将数据添加到 Firebase.database()?
- javascript - 如何在 Vue 组件内创建圆形进度