mysql教程查詢子節點 mysql如何查詢子節點

2021-10-19 00:04:52 字數 1833 閱讀 1842

mysql查詢子節點的方法:首先建立menu表,並插入資料;然後使用語句進行查詢,**為【select id from(select t1.id,if(find_in_set(parent_id, @pids) > 0......)】。

mysql查詢子節點的方法:

建立menu表:create table `menu` (

`id` int(11) not null auto_increment comment '選單id',

`parent_id` int(11) default null comment '父節點id',

`menu_name` varchar(128) default null comment '選單名稱',

`menu_url` varchar(128) default '' comment '選單路徑',

`status` tinyint(3) default '1' comment '選單狀態 1-有效;0-無效',

primary key (`id`)

) engine=innodb auto_increment=12212 default charset=utf8;

插入資料:insert into `menu` values ('0', null, '選單0', ' ', '1');

insert into `menu` values ('1', '0', '選單1', '', '1');

insert into `menu` values ('11', '1', '選單11', '', '1');

insert into `menu` values ('12', '1', '選單12', '', '1');

insert into `menu` values ('13', '1', '選單13', '', '1');

insert into `menu` values ('111', '11', '選單111', '', '1');

insert into `menu` values ('121', '12', '選單121', '', '1');

insert into `menu` values ('122', '12', '選單122', '', '1');

insert into `menu` values ('1221', '122', '選單1221', '', '1');

insert into `menu` values ('1222', '122', '選單1222', '', '1');

insert into `menu` values ('12211', '1222', '選單12211', '', '1');

得到的目錄結構如下圖所示:

查詢先貼出sql語句:select id from (

select t1.id,

if(find_in_set(parent_id, @pids) > 0, @pids := concat(@pids, ',', id), 0) as ischild

from (

select id,parent_id from re_menu t where t.status = 1 order by parent_id, id

) t1,

(select @pids := 要查詢的選單節點 id) t2

) t3 where ischild != 0

比如,要查詢選單節點12的所有子節點,則查處的結果為:

mysql子查詢教程 MySQL子查詢詳解

子查詢指乙個查詢語句巢狀在另乙個查詢語句內部的查詢,這個特性從 mysql 4.1 開始引入,在 select 子句中先計算子查詢,子查詢結果作為外層另乙個查詢的過濾條件,查詢可以基於乙個表或者多個表。子查詢中常用的操作符有 any some all in 和 exists。子查詢可以新增到 sel...

Mysql 遞迴查詢子節點

查詢父編碼及以下所有子節點 select id from select t1.id,t1.parent id,if find in set t1.id,pids 0,pids,if find in set t1.parent id,pids 0,pids concat ws pids,id 0 as...

MySQL 遞迴查詢 當前節點及子節點

1.表結構 2.查詢語句 create procedure pro getunderorg inidd varchar 36 begin declare lev int setlev 1 drop table ifexists tmp1 create table tmp1 id varchar 36...