sql循环查询删除

我有一张表 表字段 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

转载于:https://www.cnblogs.com/Iyce/archive/2012/10/25/2738734.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值