利用MySQL排序将树结构表数据封装成树结构对象(三)
2016-07-28 19:57
483 查看
生成Tree通用的存储过程(Mysql)
CREATE DEFINER=`root`@`localhost` PROCEDURE `generateTreeNode`(IN rootId INT,IN tableName varchar(50),IN idField varchar(50),IN orderField varchar(50),IN parentIdField varchar(50),IN nameField varchar(50)) BEGIN DECLARE Level int; drop TABLE IF EXISTS treeNodeList; CREATE TABLE treeNodeList ( id int, name varchar(50), nLevel int, sCort varchar(100) ); Set Level=0; SET @sqlcmd = CONCAT('INSERT into treeNodeList SELECT ',idField,', ',nameField,', ',Level,', CONCAT(',orderField ,'+10,"/",',idField,') FROM ',tableName,' WHERE ',parentIdField,' = ',rootId); PREPARE stmt FROM @sqlcmd; EXECUTE stmt; -- DEALLOCATE PREPARE stmt; WHILE ROW_COUNT()>0 DO SET Level=Level+1 ; SET @sqlcmd2 = CONCAT('INSERT into treeNodeList SELECT A.',idField,',A.', nameField,', ',Level, ', concat(B.sCort, "/",',orderField ,'+10,"/", A.',idField,') FROM ',tableName,' A, treeNodeList B WHERE A.',parentIdField,'=B.ID AND B.nLevel=',Level-1); PREPARE stmt2 FROM @sqlcmd2; EXECUTE stmt2; -- DEALLOCATE PREPARE stmt; END WHILE; DEALLOCATE PREPARE stmt; -- DEALLOCATE PREPARE stmt2; END
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 我是运营,我没有假期
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志