У меня есть временная таблица с несколькими строками, и в каждой строке есть столбец с именем 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
Теперь я хотел бы выбрать все идентификаторы категории из всех строк в временной таблице.
У меня есть следующее, и оно не работает, так как выдает ошибку:
Подзапрос вернул более 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
Что, я думаю, имеет смыслэто терпит неудачу, потому что я выбираю несколько строк, и мне нужно проанализировать соответствующие идентификаторы каждой строки json. Я просто не уверен, что делать / менять, чтобы дать мне результаты, которые я хочу. Заранее благодарю за любую помощь.