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

2021-10-08 21:51:04 字數 947 閱讀 5954

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

@test

void contextloads1()

public listgetpid(listidlist,integer pid,listschools)

return idlist;

}

結果為:

[6, 4, 3, 2, 1]
符合期望

,還有一種方法就是直接在資料庫中寫乙個遞迴的函式,這也是可行的,

begin

declare idstr varchar(2048);

declare childidstr varchar(2048);

set idstr = '$';

set childidstr = cast(orgid as char);

while childidstr is not null do

set idstr = concat(idstr, ',', childidstr);

select group_concat(pid) into childidstr from school where find_in_set(id, childidstr) > 0;

end while;

return idstr;

end

函式名以及傳入和返回引數:

返回的是這樣的結果

$,6,4,3,2,1
後續可以自己

MySQL中根據父節點查詢其所有子節點

drop function if exists fun get children delimiter create definer root 127.0.0.1 function fun get children i id int 32 returns varchar 20000 charset u...

mysql根據子節點查詢父級節點

表結構 create table t test id varchar 64 name varchar 64 parentid varchar 64 基礎資料 insert into t test id,name,parentid value 1 一級選單 0 insert into t test i...

獲取某個父節點下面的所有子節點(遞迴查詢)

1.建立乙個list集合,集合裡面包括父節點和子節點 建立乙個list集合,集合裡面包括所有父節點和子節點 public static void main string args 子節點 static list childmenu new arraylist 2.獲取某個父節點下面的所有子節點 pu...