mysql存储过程遍历树例子
2017-01-18 14:08
465 查看
– Table structure for treenodes
DROP TABLE IF EXISTS
CREATE TABLE
PRIMARY KEY (
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
– Records of treenodes
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
DROP FUNCTION IF EXISTS
DELIMITER ;;
CREATE DEFINER=
BEGIN
DECLARE sTemp varchar(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = ‘$’;
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,’,’,sTempChd);
SELECT group_concat(id) INTO sTempChd FROM treenodes where FIND_IN_SET(pid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
;;
DELIMITER ;
用法
select * from treenodes WHERE FIND_IN_SET( id, getChildLst( 2 ) )
原文:http://blog.csdn.net/ACMAIN_CHM/article/details/4142971
DROP TABLE IF EXISTS
treenodes;
CREATE TABLE
treenodes(
idint(11) NOT NULL,
nodenamevarchar(20) DEFAULT NULL,
pidint(11) DEFAULT NULL,
PRIMARY KEY (
id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
– Records of treenodes
INSERT INTO
treenodesVALUES (‘1’, ‘A’, ‘0’);
INSERT INTO
treenodesVALUES (‘2’, ‘B’, ‘1’);
INSERT INTO
treenodesVALUES (‘3’, ‘C’, ‘1’);
INSERT INTO
treenodesVALUES (‘4’, ‘D’, ‘2’);
INSERT INTO
treenodesVALUES (‘5’, ‘E’, ‘2’);
INSERT INTO
treenodesVALUES (‘6’, ‘F’, ‘3’);
INSERT INTO
treenodesVALUES (‘7’, ‘G’, ‘6’);
INSERT INTO
treenodesVALUES (‘8’, ‘H’, ‘0’);
INSERT INTO
treenodesVALUES (‘9’, ‘I’, ‘8’);
INSERT INTO
treenodesVALUES (‘10’, ‘J’, ‘8’);
INSERT INTO
treenodesVALUES (‘11’, ‘K’, ‘8’);
INSERT INTO
treenodesVALUES (‘12’, ‘L’, ‘9’);
INSERT INTO
treenodesVALUES (‘13’, ‘M’, ‘9’);
INSERT INTO
treenodesVALUES (‘14’, ‘N’, ‘12’);
INSERT INTO
treenodesVALUES (‘15’, ‘O’, ‘12’);
INSERT INTO
treenodesVALUES (‘16’, ‘P’, ‘15’);
INSERT INTO
treenodesVALUES (‘17’, ‘Q’, ‘15’);
DROP FUNCTION IF EXISTS
getChildLst;
DELIMITER ;;
CREATE DEFINER=
root@
localhostFUNCTION
getChildLst(rootId INT) RETURNS varchar(1000) CHARSET utf8
BEGIN
DECLARE sTemp varchar(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = ‘$’;
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,’,’,sTempChd);
SELECT group_concat(id) INTO sTempChd FROM treenodes where FIND_IN_SET(pid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
;;
DELIMITER ;
用法
select * from treenodes WHERE FIND_IN_SET( id, getChildLst( 2 ) )
原文:http://blog.csdn.net/ACMAIN_CHM/article/details/4142971
相关文章推荐
- mysql存储过程 例子 游标cursor 循环嵌套 事物
- mysql 存储过程 动态sql例子
- MySQL 5.0 存储过程例子(使用了游标)
- mysql 存储过程 例子
- mysql 触发器,存储过程应用例子
- MYSQL 存储过程实现类似ORACLE row_number 和 rank 的简单例子
- 简单说说MYSQL的触发器(例子包括了存储过程)
- mysql存储过程 例子 游标cursor 循环嵌套 事物
- MySQL练习例子(包含存储过程,子查询)
- mysql 函数和存储过程 例子
- mysql 存储过程 游标的例子
- MySQL 存储过程 游标例子
- Mysql 存储过程 游标 例子
- mysql 存储过程 基础例子
- 初学MYSQL存储过程
- PHP操作MYSQL用“事务”的例子
- 数据库封装类DataOperation改进(支持事务、存储过程、简单使用例子)
- JAVA/JSP学习系列之六(MySQL翻页例子)
- 从一个MySQL的例子来学习查询语句
- MySQL 5.0新特性教程(二)存储过程