重複の可能性:
SQL:自己参照テーブルから特定の順序でデータを削除する
SQL Server 2008の自己参照テーブルからレコードのサブセットを削除する必要があります。次のことを実行しようとしていますが、順序が正しくありません。
WITH SelfReferencingTable (ID, depth)
AS
(
SELECT id, 0 as [depth]
FROM dbo.Table
WHERE parentItemID IS NULL AND [t].ColumnA = '123'
UNION ALL
SELECT [t].ID, [srt].[depth] + 1
FROM dbo.Table t
INNER JOIN SelfReferencingTable srt ON [t].parentItemID = [srt].id
WHERE [t].ColumnA = '123'
)
DELETE y FROM dbo.Table y
JOIN SelfReferencingTable x on x.ID = y.id
ORDER BY x.depth DESC
これが機能しない理由はありますか?