Sql 选择具有多个特定ID的记录

Sql 选择具有多个特定ID的记录,sql,sql-server,database,Sql,Sql Server,Database,我正在尝试进行一个SQL查询,在这里我可以找到一个成员的所有ID(member\u id)以及所有分支 此all Branchs是一个由所有分支ID组成的数组。例如,所有分支的值都是[1,2,3,4,5,6,7,8,9,10] 我想查询与此类似的问题: SELECT member_id FROM member_branch WHERE branch_id IN [1,2,3,4,5,6,7,8,9,10] 但是要查询具有所有分支机构id的所有成员id。因为如果成员id只有[1,2,3],它也将

我正在尝试进行一个SQL查询,在这里我可以找到一个成员的所有ID(member\u id)以及所有分支

此all Branchs是一个由所有分支ID组成的数组。例如,所有分支的值都是
[1,2,3,4,5,6,7,8,9,10]

我想查询与此类似的问题:

SELECT member_id FROM member_branch WHERE branch_id IN [1,2,3,4,5,6,7,8,9,10]
但是要查询具有所有分支机构id的所有成员id。因为如果成员id只有
[1,2,3]
,它也将包含在查询中,我不希望

试试这个

SELECT member_id FROM member_branch where branch_id IN (1,2,3,4);

如果我正确理解了问题,并且基于
branch\u id
列中的数据格式(这是一个有效的JSON数组),您可以尝试使用基于JSON的方法。当您使用
OPENJSON()
和默认模式解析JSON数组(例如
[1,2,3,4,5,6,7,8,9,10]
)时,结果是一个包含列
类型
的表。在此之后,您可以使用任何集合基方法(
除了本例中的
外部应用

表:

CREATE TABLE member_branch (
   member_id int,
   branch_id nvarchar(100)
)
INSERT INTO member_branch 
   (member_id, branch_id)
VALUES
   (1, '[1,2,3,4,5,6,7,8,9,10]'),
   (2, '[1,2,3,4]'),
   (3, '[10]'),
   (4, '[1,2,3,4,5,6,7,8,9,10]')
DECLARE @branches nvarchar(100) = N'[1,2,3,4,5,6,7,8,9,10]'
声明:

SELECT m.member_id
FROM member_branch m
OUTER APPLY (
   SELECT [value] FROM OPENJSON(@branches)
   EXCEPT
   SELECT [value] FROM OPENJSON(m.branch_id)
) j
WHERE j.[value] IS NULL
结果:

---------
member_id
---------
1
4
这行不通

declare @branchCount int =10
select member_id from (SELECT member_id, branch_id  FROM member_branch WHERE branch_id IN ('1','2','3','4','5','6','7','8','9','10')) a group by a.member_id having count(a.member_id)>=@branchCount

什么是SQL Server版本?2017.140.1000.169 Microsoft SQL Server 2017(RTM)-14.0.1000.169(X64)2017年8月22日17:04:49版权所有(C)Windows 10 Pro 10.0上的2017 Microsoft Corporation Express Edition(64位)(构建17763:)(虚拟机监控程序)能否发布示例数据和预期结果?请详细发布示例。