mysql查出樹結構的所有子節點

2021-09-25 10:00:21 字數 1881 閱讀 3440

tree結構表

create table `model_struc` (

`id` varchar(36) not null comment 'id',

`name` varchar(50) default null comment '名稱',

`morder` varchar(255) default null comment '排序',

`pid` varchar(36) default null comment '父選單id',

`iconid` varchar(32) default null comment '圖示id',

`create_by` varchar(32) default null comment '建立人id',

`create_name` varchar(32) default null comment '建立人',

`update_by` varchar(32) default null comment '修改人id',

`update_date` datetime default null comment '修改時間',

`create_date` datetime default null comment '建立時間',

`update_name` varchar(32) default null comment '修改人',

`icode` varchar(32) default null comment '模型**',

`version` varchar(32) default null comment '版本',

primary key (`id`)

) engine=innodb default charset=utf8 comment='模型結構';

查詢函式:

這個函式只需要改一下表明,還有pid的名字成你的即可復用

create definer=`fkgl`@`%` function `getchildlst`(rootid varchar(36)) returns varchar(1000) charset utf8

begin

declare stemp varchar(1000);

declare stempchd varchar(1000);

set stemp='$';

set stempchd=cast(rootid as char);

while stempchd is not null do

set stemp=concat(stemp,',',stempchd);

select group_concat(id) into stempchd

from

model_struc

where

find_in_set(pid, stempchd) > 0;

endwhile;

return stemp;

end

我的樹,pos模型是根節點,他的id是1dffsdad

使用方法:

getchildlst(『你的id』)裡傳入的是根節點id,也可以是父節點id,如果是根節點就查出根下面所有的子節點,父節點的id就查出該父節點下面的所有子節點

select * from model_struc where find_in_set(id, getchildlst('1dffsdad'))
查出來的結果是:

MySQL遞迴查詢所有子節點,樹形結構查詢

delimiter drop procedure if exists findlchild iid 遞迴父節點 layer 允許遞迴深度 create procedure findlchild iid bigint 20 layer bigint 20 begin 建立接受查詢的臨時表 create...

統計所有可能的二叉樹結構的種數

問題 給定乙個整數 如果n 1,代表空樹結構,否則代表中序遍歷的結果為 請返回可能的二叉樹結構有多少。基本思路 假設num n 代表 個節點的搜尋二叉樹有多少種可能。假設序列 1 i n 如果以 作為頭結點,的左子樹有i 1個節點,所以可能的結構有num i 1 種,右子樹有n i個節點,所以有nu...

根據XML檔案父節點的屬性值取得所有子節點

1 xml version 1.0 2 root 3 nodes name 操作型別 4 node value 1 增加 node 5 node value 2 刪除 node 6 node value 3 修改 node 7 node value 4 啟用 node 8 node value 5 ...