欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

在mysql中建立树形结构_MySQL

程序员文章站 2022-04-16 18:52:57
...
bitsCN.com 在mysql中建立树形结构 这个不是什么新东西了,网上有很多方法,我也尝试了其中好的方法,都不尽人意,这是我最后我推荐的方法,共享一下,大家一起讨论,当然难如高手法眼,呵呵。我就直接贴代码了,有问题就联系我。 mysql中要有树形结构我认为表中应该有如写字段: 举例菜单表menu: [sql] create table menu ( id int not null auto_increment, pid int, name varchar(100) not null, nlevel int, scort varchar(8000), primary key (id) ) type = InnoDB; alter table menu add constraint FK_Reference_67 foreign key (pid) references menu (id) on delete restrict on update restrict 创建存储过程genNode_menu: [sql] BEGIN DECLARE Level int ; Set Level=0 ; update menu a inner join (SELECT id,Level,concat(',',ID,',') scort FROM menu WHERE pid is null) b on a.id=b.id set a.nlevel=b.level,a.scort=b.scort; WHILE FOUND_ROWS()>0 DO SET Level=Level+1; update menu a inner join ( SELECT ID,Level,scort FROM menu WHERE nLevel=Level-1) b on a.pid=b.id set a.nlevel=b.level,a.scort=concat(b.sCort,a.ID,','); END WHILE; END 插入数据:[sql] INSERT INTO menu VALUES ('1', null, '菜单1', null, null); INSERT INTO menu VALUES ('2', '1', '菜单1-1', null, null); INSERT INTO menu VALUES ('3', null, '菜单2', null, null); INSERT INTO menu VALUES ('4', '3', '菜单2-1', null, null); INSERT INTO menu VALUES ('5', '4', '菜单2-1-1', null, null); 执行存储过程:[sql] call genNode_menu; 我们看一看menu表现在是什么情况了:
在mysql中建立树形结构_MySQL 很好,就是这个效果 现在可以按你的需求随便查询了: 比如: [sql] select * from menu a where a.scort not like '%,1,%' order by a.scort 作者 lifaming15 bitsCN.com
相关标签: mysql