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

熱點內容
sql2000開發版 發布:2025-09-16 07:56:31 瀏覽:792
linux桌面哪個 發布:2025-09-16 07:55:35 瀏覽:46
python讀取網頁 發布:2025-09-16 07:45:05 瀏覽:329
qq郵件的密碼是什麼 發布:2025-09-16 07:44:20 瀏覽:716
演算法什麼特點 發布:2025-09-16 07:40:10 瀏覽:345
matlab編程第四版答案 發布:2025-09-16 07:35:51 瀏覽:450
寄存器和存儲單元 發布:2025-09-16 07:35:48 瀏覽:913
伺服器sellog是什麼 發布:2025-09-16 07:33:34 瀏覽:377
python字母排序 發布:2025-09-16 07:02:45 瀏覽:215
源碼移位除法 發布:2025-09-16 06:55:59 瀏覽:729