Use a CTEdeclare @test table(ID int,Name varchar(100),Parent int)INSERT INTO @testSELECT 9, 'Histopathology' ,Null UNION ALL--ModuleSELECT 40, 'Cervical', 9 UNION ALL --Sub ModuleSELECT 41, 'Cancer', 9 UNION ALL--Sub ModuleSELECT 900, 'Liver', 40 UNION ALL --Sub ModuleSELECT 901, 'Virtual Slides', 40 UNION ALL --Sub ModuleSELECT 904, 'Cytopathology', 41 UNION ALL --Sub ModuleSELECT 1006, 'Neurology', 41 UNION ALLSELECT 11, 'pathology' ,Null UNION ALLSELECT 200, 'Micropathology' ,11DECLARE @ID intSET @ID=9;With CTE (ID, Name, Parent)AS(SELECT ID, Name, ParentFROM @testWHERE ID=@IDUNION ALLSELECT t.ID,t.Name,t.ParentFROM @test tINNER JOIN CTE cON c.ID=t.Parent)delete t from @test tjoin CTE con c.ID=t.IDselect * from @test