MYSQL实现Oracle的Start with…Connect By递归树查询详解编程语言
2023-06-13 09:20:41 时间
因项目迁移,使用的数据库也需要从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
运行结果
作者:blog.ytso.com
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14199.html
cjavamysqloracle相关文章
- MySQL与Oracle的区别_oracle表空间和mysql
- 探索Oracle递归层级结构(oracle递归层级)
- 深入理解Oracle行锁与表锁(oracle行锁表锁)
- MySQL外键的创建:从入门到掌握(mysql外键的创建)
- Oracle表添加外键约束精彩实例(oracle表加外键)
- MySQL轻松搞定数据库运维(mysql运用)
- mysql从Oracle到MySQL: 迁移之路(oraclegt)
- 如何优化Oracle连接数提升数据库性能(oracle连接数)
- 快速实现!Oracle如何提取单个数据(oracle获取一条数据)
- ?MySQL数据库如何快速创建?(mysql数据库怎么创建)
- 拥抱MySQL:最佳的编程培训机构(mysql编程培训机构)
- MySQL代表什么解密MySQL数据库管理系统的含义(mysql中代表什么意思)
- 查询掌握Oracle写递归查询的技巧(oracle 写递归)
- 构建MySQL 高效运行环境Atom 的威力(atom能用于mysql)
- MySQL转换Oracle实现数据库迁移(mysql转换oracle)
- 探索MySQL与Oracle之间的联系(mysql联oracle)
- MySQL递归实现简明教程(mysql中写递归)
- MySQL表达式管理超大型数千万级数据量表的经验和技巧(mysql 上千万的表)
- 深入浅出Oracle中的递归语句(oracle中的递归语句)
- 解析Oracle DB2两大数据库系统的差异(oracle db2不同)