На SQL Server:Използвайте рекурсивна заявка. Като се има предвид CREATE TABLE tmp(Id int, Parent int), използвайте
WITH x(Id) AS (
SELECT @Id
UNION ALL
SELECT tmp.Id
FROM tmp
JOIN x ON tmp.Parent = x.Id
)
DELETE tmp
FROM x
JOIN tmp ON tmp.Id = x.Id