删除树型结构数据的节点问题

sdts 2005-10-28 05:44:07
表结构
------------
ID Title Parent_ID
1 物品装备 0
2 武器 1
3 药品 1
4 刀 2
5 剑 2
6 1111111 0
7 sub111 6

树型排出来就是下面的结构
-------------
物品装备
武器


1111111
sub111

现在我要删除“物品装备”这个节点 那么该节点下面的武器以及武器下面的刀、剑就全要删除
sql语句怎么写?就是我知道“物品装备”的id是1,怎么依据这个删除该节点以下所有的数据!

谢谢!!

...全文
159 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2005-10-28
  • 打赏
  • 举报
回复
--生成测试数据
create table BOM(ID INT,Title VARCHAR(1000),Parent_ID INT)
insert into BOM select 1,'物品装备',0
insert into BOM select 2,'武器 ',1
insert into BOM select 3,'药品 ',1
insert into BOM select 4,'刀 ',2
insert into BOM select 5,'剑 ',2
insert into BOM select 6,'1111111 ',0
insert into BOM select 7,'sub111 ',6
go

--创建用户定义函数
create function f_getChild(@ID VARCHAR(10))
returns @t table(ID VARCHAR(10),Parent_ID VARCHAR(10),Level INT)
as
begin
declare @i int,@ret varchar(8000)
set @i = 1
insert into @t select ID,Parent_ID,@i from BOM where ID = @ID

while @@rowcount<>0
begin
set @i = @i + 1

insert into @t
select
a.ID,a.Parent_ID,@i
from
BOM a,@t b
where
a.Parent_ID=b.ID and b.Level = @i-1
end
return
end
go

--执行删除
delete from BOM where ID in (select ID from dbo.f_getChild(1))


--输出结果
select * from BOM
/*
ID Title Parent_ID
---- ------- -------
6 1111111 0
7 sub111 6
*/

--删除测试数据
drop function f_getChild
drop table BOM

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧