我有一个包含多行的临时表,每行都有一个名为Categories
; 它包含一个非常简单的 json 数组,ids
用于不同表中的类别。
临时表的一些示例行:
Id Name Categories
---------------------------------------------------------------------------------------------
'539f7e28-143e-41bb-8814-a7b93b846007' Test 1 ["category1Id", "category2Id", "category3Id"]
'f29e2ecf-6e37-4aa9-aa56-4a351d298bfc' Test 2 ["category1Id", "category2Id"]
'34e41a0a-ad92-4cd7-bf5c-8df6bfd6ed5c' Test 3 NULL
现在我想做的是从临时表中的所有行中选择所有类别 ID。
我所拥有的是以下内容,但它不起作用,因为它给了我以下错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
SELECT
c.Id
,c.[Name]
,c.Color
FROM
dbo.Category as c
WHERE
c.Id in (SELECT [value] FROM OPENJSON((SELECT Categories FROM #TempTable)))
and c.IsDeleted = 0
我想这是有道理的,因为我选择了多行并需要解析每一行各自的类别 ids json。我只是不确定该怎么做/改变才能给我想要的结果。预先感谢您的任何帮助。