Как я могу использовать это в запросе? Есть ли способ использовать tableIds в TableList? Могу ли я рассматривать их как подзапрос?Использование sql with in where where
select * from TestTable where tableId in
(WITH TableList (tableId)
AS
(
SELECT tableId FROM OldTable WHERE tableId=5 and IsDeleted = 0
UNION ALL
SELECT t.tableId From OldTable as t
INNER JOIN TableList as p
ON t.ParenTableId = p.TableId
WHERE t.IsDeleted = 0
)
SELECT tableId FROM TableList
)
EDIT: показать, почему я не могу использовать это в первом выражении sql.
select TableId, IsDeleted,
(
select count(OtherId) OtherTable
where otherTableId in
(WITH TableList (tableId)
AS
(
SELECT tableId FROM OldTable WHERE tableId=5 and IsDeleted = 0
UNION ALL
SELECT t.tableId From OldTable as t
INNER JOIN TableList as p
ON t.ParenTableId = p.TableId
WHERE t.IsDeleted = 0
)
SELECT tableId FROM TableList
)
) as Ex1
from TestTable where tableId in (1,2,3)
Я думаю, что это шоу, почему им пытаются использовать с пунктом в середине запроса SQL.
Что вы пытаетесь сделать здесь? –
im пытается получить столы рекурсивными. В моих столбцах OldTable используются TableId, ParentTableId и Isdeleted. Используя этот sql im, пытаясь получить все дочерние таблицы tableId = 5 –