使用遞迴查詢某地區所有父級,並且拼接為內容

2021-08-25 17:15:09 字數 1168 閱讀 3760

區域表:

-- 刪除函式

drop function `getparentlist`  

-- 建立函式

create function `getparentlist`(subid varchar(100))   

returns varchar(1000)   

begin   

declare fid varchar(100) default '';   -- 父級id

declare temp varchar(100) default '';  -- 臨時區域名稱

declare str varchar(1000) default '';  -- 區域名稱 

while subid is not null  do   -- 迴圈判斷父級id是否存在

-- 獲取父級id及區域名稱

select parent_id,name into fid,temp  from region where id = subid; 

if fid is not null then   

if length(str)<=0 then 

set str = temp;   -- 

else

set str = concat(str, ',', temp);   

end if;   

set subid = fid;   

else   

set subid = fid;   

end if;   

end while;   

--  由於最後一次不會執行上面的迴圈所有就單獨執行

select parent_id,name into fid,temp  from region where id = subid;

set str = concat(str, ',', temp);   

return str;  

end-- 執行函式

select getparentlist('2511');   

--結果

C 使用遞迴查詢樹的所有父節點

背景 公司專案要實現相容 ms sql oracle pgsql dm 等多種資料庫,由於各種資料庫對遞迴實現方式不盡相同,如果每種資料庫都寫一種 sql 語句來實現,未免太多,且需求是不定的,哪天又加一種資料庫,會很大的增加 的維護成本。因此為了更好的同時相容多種資料庫,我們可以用 代替 sql ...

根據子節點遞迴查詢所有父節點

有個需求,需要根據給定的子節點向上遞迴查詢所有父節點,網上查詢了一些,但是都不是很滿意,有的是需要用到全域性變數定義儲存列表,但是會有併發問題,然後自己手寫乙個 test void contextloads1 public listgetpid listidlist,integer pid,list...

使用迴圈查詢父級內容

alter procedure dbo up3 tdept tdtid bydeptid deptid int as begin declare id int set id deptid create table temp tdtid int tdtpid int null,tdtname varc...