MYSQL实现Oracle的Start with…Connect By递归树查询
来源:互联网 发布:垂直b2b平台 源码 编辑:程序博客网 时间:2024/04/30 14:14
因项目迁移,使用的数据库也需要从Oracle迁移到MySQL 其中有个功能使用到了Oracle的Start with…Connect By递归树查询,而MySQL中没有此函数,但可以通过自定义函数的方式来解决这个问题
创建表
create table treeList( id varchar(10), -- 节点ID name varchar(10), -- 节点名称 pId varchar(10) -- 父ID)
插入测试数据
insert into treeList values(1,'中国',null);insert into treeList values(2,'北京',1);insert into treeList values(3,'上海',1);insert into treeList values(4,'深圳',1);insert into treeList values(5,'海淀',2);insert into treeList values(6,'朝阳',2);insert into treeList values(7,'昌平',2);insert into treeList values(8,'丰台',2);
创建函数getChildList
CREATE FUNCTION getChildList (rootId VARCHAR(100)) -- rootId为要查询的节点RETURNS VARCHAR(1000)BEGIN DECLARE pTemp VARCHAR(1000); DECLARE cTemp VARCHAR(1000); -- 定义两个临时变量 SET pTemp = ''; SET cTemp = rootId; WHILE cTemp is not null DO if (pTemp = '') then SET pTemp = cTemp; elseif(pTemp <> '') then SET pTemp = concat(pTemp,',',cTemp); -- 所有节点连接成字符串 end if; SELECT group_concat(id) INTO cTemp FROM treeList WHERE FIND_IN_SET(pId,cTemp)>0; END WHILE; RETURN pTemp; END
执行方法 查询节点为“2”下的所有节点
select getChildList('2') as ids
运行结果
作者:itmyhome
阅读全文
2 0
- MYSQL实现Oracle的Start with…Connect By递归树查询
- 使用MYSQL实现Oracle的Start with...Connect By递归树查询
- 使用MYSQL实现Oracle的Start with...Connect By递归树查询
- Oracle start with......connect by prior......子句实现递归查询
- Oracle start with.connect by prior子句实现递归查询
- Oracle start with.connect by prior子句实现递归查询
- Oracle start with.connect by prior子句实现递归查询
- Oracle start with.connect by prior子句实现递归查询
- Oracle start with.connect by prior子句实现递归查询
- Oracle start with...connect by prior 实现递归查询
- Oracle递归查询 start with Connect By
- oracle递归查询 start with...connect by
- oracle start with connect by递归查询
- Oracle 递归查询 树查询 start with SQL CONNECT BY
- mysql 实现oracle start with connect by递归
- mysql 实现oracle start with connect by递归
- Oracle 的树形递归查询 Start With Connect BY
- Oracle递归查询 Start with…Connect By用法
- 安卓——读取到手机通讯录中的好友的备注信息
- mysql的auto_incremnet操作
- 【Android源码】从源码角度深入理解Android中Dialog、PopUpWindow、Toast区别
- jQuery随机抽中手机号码抽奖代码
- Yii框架学习之路
- MYSQL实现Oracle的Start with…Connect By递归树查询
- TestNG实现日志输出
- JQuery validate 下拉菜单验证
- 3-4.栈与队列
- Python checkio Pawn Brotherhood解决方案
- 2017.12.08日记
- Java调用Kettle时,报Can't run transformation due to plugin missing错误的解决方法
- jsp分页
- 一台服务器实现nginx代理负载均衡同时使用web服务