當前位置:首頁 » 編程語言 » 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
--遞歸調用,不知道是否想要這樣

熱點內容
山西省dns伺服器地址虛擬主機 發布:2025-10-19 13:56:58 瀏覽:70
哪裡修改寬頻密碼 發布:2025-10-19 13:49:38 瀏覽:989
魅族怎麼升級安卓系統 發布:2025-10-19 13:41:15 瀏覽:796
搭建伺服器要多少大空間 發布:2025-10-19 13:26:46 瀏覽:274
android顯示fragment 發布:2025-10-19 13:26:41 瀏覽:877
linux給root設置密碼 發布:2025-10-19 13:17:30 瀏覽:604
python爬蟲ip 發布:2025-10-19 13:16:51 瀏覽:366
我的世界創建伺服器登錄失敗 發布:2025-10-19 13:12:11 瀏覽:285
unit買哪個配置劃算 發布:2025-10-19 12:58:20 瀏覽:324
Android5谷歌 發布:2025-10-19 12:57:34 瀏覽:379