建函数
一、查父集合
--drop FUNCTION `getParentList` CREATE FUNCTION `getParentList`(rootId varchar(100)) RETURNS varchar(1000) BEGIN DECLARE fid varchar(100) default ''; DECLARE str varchar(1000) default rootId; WHILE rootId is not null do SET fid =(SELECT parentid FROM treeNodes WHERE id = rootId); IF fid is not null THEN SET str = concat(str, ',', fid); SET rootId = fid; ELSE SET rootId = fid; END IF; END WHILE; return str; END
查询:
select getParentList('001001001001001'); select * from sbkfwh where FIND_IN_SET(id,getParentList('001001001001002'))
二、查子集合
--drop FUNCTION `getChildList` CREATE FUNCTION `getChildList`(rootId varchar(100)) RETURNS varchar(2000) BEGIN DECLARE str varchar(2000); DECLARE cid varchar(100); SET str = '$'; SET cid = rootId; WHILE cid is not null DO SET str = concat(str, ',', cid); SELECT group_concat(id) INTO cid FROM treeNodes where FIND_IN_SET(parentid, cid) > 0; END WHILE; RETURN str; END
查询
select getParentList('001001001'); select * from sbkfwh where FIND_IN_SET(id,getChildList('001001001'))
Mysql函数中并不支持动态sql,Dynamic SQL is not allowed in stored function or trigger
要想查多个表的,可以建多个函数,或用以下方法
drop FUNCTION `getChildListTest` CREATE FUNCTION `getChildListTest`(tableName varchar(64),rootId varchar(100)) RETURNS varchar(2000) BEGIN DECLARE str varchar(2000); DECLARE cid varchar(100); SET str = '$'; SET cid = rootId; IF tableName = 'tableName1' THEN WHILE cid is not null DO SET str = concat(str, ',', cid); SELECT group_concat(id) INTO cid FROM tableName1 where FIND_IN_SET(parentid, cid) > 0; END WHILE; ELSEIF tableName = 'tableName2' THEN WHILE cid is not null DO SET str = concat(str, ',', cid); SELECT group_concat(id) INTO cid FROM tableName2 where FIND_IN_SET(parentid, cid) > 0; END WHILE; END IF; RETURN str; END
参考:
mysql 递归查询 (函数)
http://my.oschina.net/cheeryzxh007/blog/299475 (ID为INT型)
比较两种mysql递归tree查询效率-mysql递归tree (函数,存储过程)
http://jingyan.baidu.com/article/647f01158ee0da7f2148a80b.html
MySQL中进行树状所有子节点的查询 (函数,存储过程)
相关推荐
树形结构,输入一个分公司,可以查询该分公司下的所以子公司,包括子公司的子公司,无穷级下去!
不解MYSQL高级数据管理的相关技巧,包括了一些必要的SQL语句和高级数据管理的讲解,像邻接表模型、检索整树、检索所有叶子节点、检索单一路径、邻接表模型的局限性、嵌套集合(Nested Set)模型、检索子树的深度、嵌套...
8.4 集合运算符与子查询 8.4.1 IN运算符 8.4.2 ANY和SOME运算符 8.4.3 ALL运算符 8.4.4 EXISTS运算符 8.5 在其他类型SQL语句中的子查询应用 8.5.1 子查询在INSERT语句中的应用 8.5.2 子查询在UPDATE...
8.4 集合运算符与子查询 8.4.1 IN运算符 8.4.2 ANY和SOME运算符 8.4.3 ALL运算符 8.4.4 EXISTS运算符 8.5 在其他类型SQL语句中的子查询应用 8.5.1 子查询在INSERT语句中的应用 8.5.2 子查询在UPDATE...
8.4 集合运算符与子查询 8.4.1 IN运算符 8.4.2 ANY和SOME运算符 8.4.3 ALL运算符 8.4.4 EXISTS运算符 8.5 在其他类型SQL语句中的子查询应用 8.5.1 子查询在INSERT语句中的应用 8.5.2 子查询在UPDATE...
8.4 集合运算符与子查询 8.4.1 IN运算符 8.4.2 ANY和SOME运算符 8.4.3 ALL运算符 8.4.4 EXISTS运算符 8.5 在其他类型SQL语句中的子查询应用 8.5.1 子查询在INSERT语句中的应用 8.5.2 子查询在UPDATE...
8.4 集合运算符与子查询 8.4.1 IN运算符 8.4.2 ANY和SOME运算符 8.4.3 ALL运算符 8.4.4 EXISTS运算符 8.5 在其他类型SQL语句中的子查询应用 8.5.1 子查询在INSERT语句中的应用 8.5.2 子查询在UPDATE...
多表连接,内外连接, 子查询等 管理表、视图、索引、序列、约束等 树状结构存储 存储过程、触发器 数据库设计三范式、 3:JDBC JDBC基础 连接池 树状结构存储与展现 DataSource & RowSet JDBC连接Oracle及...
04 多表查询之复合查询与子查询 05 mysql之索引 第48章 01 python操作数据库pymysql 02 数据库之事务 03 mysql事务之savepoint 第49章 01 http协议之请求协议 02 http协议之响应协议 03 web框架的概念 04 做一个...
//递归查询父节点 select t.* from g_organ t start with t.organcode = '080' connect by t.parentcode = prior t.organcode; //递归查询子节点 1.8.7 union 和 union all 1.8.7.1 语法 select * from dual union ...
集合 多线程 IO 问题排查 Web框架、数据库 Spring MySQL Redis 通用基础 操作系统 网络通信协议 排序算法 常用设计模式 从URL到看到网页的过程 分布式 CAP理论 锁 事务 消息队列 协调器 ID生成方式 一致性hash 限流 ...
mysql 连接查询 mysql 事务与索引 mysql python交互 sqlalchemy orm介绍 sqlalchemy 常用语法 sqlalchemy 外键关联 sqlalchemy 多外键关联 sqlalchemy 多对多关联 作业之学员管理系统开发 第13周 堡垒机框架开发...
├─(51) 04 python s3 day47 多表查询之复合查询与子查询.avi ├─(52) 05 python s3 day47 mysql之索引.avi (12)\\python全栈day41-50\\python全栈s3 day48;目录中文件数:3个 ├─(53) 01 python s3 day48 python...
10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...
10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...
10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...
10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...
10-26 4 jquery对象集合遍历的四种形式及练习题讲解 jquery的dom操作 10-27 1课程回顾 10-27 2 jquery的dom操作 内部插入 外部插入 10-27 3 jquery节点操作 10-27 4 练习题讲解 10-27 5 jquery属性操作 获取子元素和...
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...