Heim >Datenbank >MySQL-Tutorial >在mysql中建立树形结构_MySQL

在mysql中建立树形结构_MySQL

WBOY
WBOYOriginal
2016-06-01 13:41:571510Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn