Home >Database >Mysql Tutorial >在mysql中建立树形结构_MySQL

在mysql中建立树形结构_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:41:571589browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn