어떻게 이런 쿼리에서 사용할 수 있습니까? TableList에서 tableIds를 사용하는 방법이 있습니까? 하위 쿼리처럼 취급 할 수 있습니까?where 절에 sql을 사용하십시오
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 쿼리의 중간에 절을 사용하려고 메신저.
여기서 무엇을하려고합니까? –
메신저가 재귀 적으로 표를 가져 오려고합니다. 내 OldTable 열에는 TableId, ParentTableId 및 Isdeleted가 있습니다. 이 sql 메신저를 사용하여 tableId = 5의 모든 자식 테이블을 가져 오려고 시도합니다. –