parentid删除sql表中的所有子行

Par*_*ras 1 sql sql-server rdbms cascading-deletes

我有一张桌子,我从中创建了一个具有多个级别和父级的树.表结构如下所示.

在此输入图像描述

当我删除"TitleID"时,我希望删除所有孩子甚至孙子孙女.在sql中最简单的方法是什么?如果我使用"where ParentID = TitleID"进行简单删除,则只删除级别为1的子级.

Yaq*_*mad 5

DECLARE @TitleId INT 

SELECT @@TitleId = 2 

;WITH results AS( 
        SELECT  TitleId
        FROM    myTable 
        WHERE   TitleId = @TitleId 
        UNION ALL 
        SELECT  t.TitleId 
        FROM    myTable t 
                INNER JOIN ret r ON t.ParentID = r.TitleId
) 

DELETE FROM myTable WHERE TitleId IN (SELECT TitleId FROM    results )
Run Code Online (Sandbox Code Playgroud)