当前位置:首页 » 编程语言 » sql查询父节点所有子节点

sql查询父节点所有子节点

发布时间: 2025-05-09 15:53:19

sql根据子节点查出所有的父节点的

用函数做,根据你的表结构改:
父节点查询子节点
create function GetChildID(@ParentID int)
returns @t table(ID int)
as
begin
insert into @t select id from table where parent_id = @ParentID
while @@rowcount<>0
begin
insert into @t select a.id from table as a
inner join @t as b
on a.parent_id = b.ID
and not exists(select 1 from @t where ID=a.ID)
end
return
end
go

子节点查询父节点
create function GetParentID(@ChildID int)
returns @t table(PID int)
as
begin
insert into @t select parent_id from table where ID=@ChildID
while @@rowcount<>0
begin
insert into @t select a.parent_id from table as a
inner join @t as b
on a.ID=b.PID
and not exists(select 1 from @t where PID=a.parent_id)
end
return
end
go

Ⅱ SQL语句查询出父节点下的所有子节点


createtable##tmp_users(idint,usernamenvarchar(255),parentidint)
declare@IDint
select@ID=idfromt_Userstwhereexists
(select*fromt_Userst2wheret2.id=t.parentidandt2.username='user1')
execAddSons@ID
select*from##tmp_users
droptable##tmp_users


--存储
createprocereAddSons@idint
as
ifexists(select*fromt_Userswhereparentid=@id)
begin
declare@tmp_IDint
declarecurcursorfor
selectidfromt_Userswhereparentid=@id
opencur
fetchnextfromcurinto@tmp_ID
while@@FETCH_STATUS=0
begin
insertinto##tmp_users
select*fromt_Userstwhereid=@tmp_ID
ifexists(select*fromt_Userswhereparentid=@tmp_ID)
begin
execAddSons@tmp_ID
end
fetchnextfromcurinto@tmp_ID
end
closecur
DEALLOCATEcur
end
--递归调用,不知道是否想要这样

热点内容
小君直播密码是多少 发布:2025-09-16 09:25:46 浏览:600
用中文编译的编程软件 发布:2025-09-16 09:04:37 浏览:143
语音编译器教程 发布:2025-09-16 08:57:44 浏览:448
sql注册服务器 发布:2025-09-16 08:53:17 浏览:611
嵌入式linuxc编程入门 发布:2025-09-16 08:24:18 浏览:383
码片编程器 发布:2025-09-16 08:24:08 浏览:952
原神各画质要什么配置 发布:2025-09-16 08:17:32 浏览:321
读取数据库生成xml 发布:2025-09-16 08:17:19 浏览:798
sql2000开发版 发布:2025-09-16 07:56:31 浏览:809
linux桌面哪个 发布:2025-09-16 07:55:35 浏览:63