我有一张表 表字段 HomeClassID(主键ID),HomeClassName(类别名称),ParentId(父类ID,为0时,表示为一级),Sort(排序字段)
现在 HomeClassID HomeClassName ParentId Sort
1 新闻 0 1
2 国际新闻 1 1
3 国内新闻 1 2
4 娱乐新闻 1 3
5 港台娱乐新闻 4 1
6 内地娱乐新闻 4 2
其中 港台娱乐新闻和内地娱乐新闻是 娱乐新闻 的子类 而娱乐新闻又是新闻的子类 我现在要根据新闻(ID是1) 查询出他下面全部的子类,(有可能内地娱乐新闻下面还有子类),然后将下面的全部子类删除,最后将新闻删除 应该怎么写呢?
CREATE PROCEDURE xinwen
(@ID int)
AS
CREATE TABLE #t_Level(ID int,Level int)
DECLARE @Level int
BEGIN
SET @Level=1
INSERT t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT t_Level SELECT a.ID,@Level
FROM 新闻表 a,t_Level b
WHERE a.prents=b.ID
AND b.Level=@Level-1
END
delete from 新闻表 where id in (select id from #t_Level)
END
GO