oracle递归查询语句(oracle递归查询函数)

   2023-04-21 互联网0
核心提示:众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的。这个得益于Mysql允许在SQL语句内使用@变量。以下是示例代码。 创建表格 CREATE TABLE `lf_

oracle递归查询语句(oracle递归查询函数)

众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的。这个得益于Mysql允许在SQL语句内使用@变量。以下是示例代码。

创建表格

CREATE TABLE `lf_ctrl_trade` ( `TRADEID` int , -- 节点ID `nodename` varchar (60), -- 节点名称 `PARENTID` int -- 节点父ID);

方案一:

SELECt TRADEID AS ID,PARENTID AS 父ID ,levels AS 父到子之间级数, paths AS 父到子路径 FROM ( SELECt TRADEID,PARENTID, @le:= IF (PARENTID = 0 ,0, IF( LOCATE( CONCAt(\'|\',PARENTID,\':\'),@pathlevel) > 0 , SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAt(\'|\',PARENTID,\':\'),-1),\'|\',1) +1 ,@le+1) ) levels , @pathlevel:= CONCAt(@pathlevel,\'|\',TRADEID,\':\', @le ,\'|\') pathlevel , @pathnodes:= IF( PARENTID =0,\',0\', CONCAT_Ws(\',\', IF( LOCATE( CONCAt(\'|\',PARENTID,\':\'),@pathall) > 0 , SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAt(\'|\',PARENTID,\':\'),-1),\'|\',1) ,@pathnodes ) ,PARENTID ) )paths ,@pathall:=CONCAt(@pathall,\'|\',TRADEID,\':\', @pathnodes ,\'|\') pathall FROM lf_ctrl_trade, (SELECt @le:=0,@pathlevel:=\'\', @pathall:=\'\',@pathnodes:=\'\') vv ORDER BY PARENTID,TRADEID ) srcORDER BY TRADEID

方案二:

创建函数

DROp FUNCTION IF EXISTS queryChildrenTrade;CREATE FUNCTION `queryChildrenTrade` (myid INT)RETURNS VARCHAr(4000)BEGINDECLARE sTemp VARCHAr(4000);DECLARE sTempChd VARCHAr(4000); SET sTemp = \'$\';SET sTempChd = cast(myid as char); WHILE sTempChd is not NULL DOSET sTemp = CONCAt(sTemp,\',\',sTempChd);SELECt group_concat(TRADEID) INTO sTempChd FROM lf_ctrl_trade where FIND_IN_SET(PARENTID,sTempChd)>0;END WHILE;return sTemp;END;

如何查询:

select * from lf_ctrl_trade where FIND_IN_SET(TRADEID, queryChildrenTrade(3000))
 
标签: 级数 节点 示例
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与爱美生活网(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 最小的自然数是多少?_四年级数学题,最小的自然数是 (),自然数的个数是()的。
    最小的自然数是多少?_四年级数学题,最小的自
    近日最小的自然数是多少?_四年级数学题,最小的自然数是 (),自然数的个数是()的。消息关注度非常高,想要进一步了解这方面的最新消息,小编给大家整理出有关这方面的全部内容,希望能够帮助到大家深入了解!最小的自然数是0。自然数集是全体非负整数
    09-16
  • 如何学好小学一年级数学(教学学习兴趣生动)
    如何学好小学一年级数学(教学学习兴趣生动)
    将知识游戏化。使用生活事件或东西教育;使用玩具教学。如弹珠、扑克牌、小棒、积木、硬币等;使用童话教学。利用故事培养孩子数学兴趣;激发学生竞争意识。竞争是培养学生学习兴趣和提高学习成绩的有效手段;注意运用生动形象化的教学语言。语言生动能有效激
  • 大学数学包括哪些(函数级数微分学积)
    大学数学包括哪些(函数级数微分学积)
    大学数学管辖的课程有:高等数学、线性代数、概率论与数理统计、复变函数与积分变换、数理方程与特殊函数、计算方法六门。 经管类的少点,并且高等数学经管类一般称为微积分,高等数学课程的内容为:函数与极限,一元函数微分学,一元函数积分学,空间解析几
  • 六年级数学怎么学才能提高成绩 六年级数学有哪些内容
    六年级数学怎么学才能提高成绩 六年级数学有哪
    如果想要提高六年级数学的成绩,可以从以下这几个方面开始着手:1、从基础知识开始学起。2、增加课后的练习题数量。3、多去提问同学或老师。4、增加对学科的兴趣。关于“六年级数学怎么学才能提高成绩”的具体回答,如果大家感兴趣的话,可以继续往下阅读
    12-21
  • 关于反应级数的各种说法中正确的是:()
    关于反应级数的各种说法中正确的是:()
    "关于反应级数的各种说法中正确的是:()"这道题是不是很难呢,如果不知道答案,接下来看一下小编就为大家提供一下正确答案哦。关于反应级数的各种说法中正确的是:()A.只有基元反应的级数是正整数B.反应级数不会小于零C.反应总级数一定大于对任一
    11-16
  • 中国研究员回应登上顶级数学期刊,究竟是怎么一回事?
    中国研究员回应登上顶级数学期刊,究竟是怎么一
    正文摘要:近日,华中科技大学数学中心副研究员郇真的独作文章被数学界顶级期刊Acta Mathematica接收,在学术界引起巨大关注。她苦心孤诣的科研历程,加上名字在英文中写作“Zhen Huan”,也让很多网友充满敬意地称她为“数学界的甄
    10-17
  • 马尔代夫满月岛几星
    马尔代夫满月岛几星
    马尔代夫满月岛属于五星,是度假天堂马尔代夫比较著名的度假海岛,也是最早向中国人开放的海岛了,岛上有着湛蓝的海水,细腻的沙滩,姹紫千红的花朵,景致非常的优美。  满月岛算是马尔代夫众多岛屿中,比较出名的岛屿了,岛上除了有湛蓝的海水,白皙的沙滩
  • 人教版一年级数学上册教学计划
    人教版一年级数学上册教学计划
    ××小学2022~2023学年第一学期一年级数学教学计划一、教材分析这一册教材包括下面一些内容:准备课,位置,10以内数的认识和加减法,认识立体图形,11~20各数的认识,认识钟表,20以内的进位加法,用数学解决问题,综合与实践主题活动。“
    06-09
  • 负数是自然数吗小数是自然数吗零是自然数吗(小学六年级数学必知必会)
    负数是自然数吗小数是自然数吗零是自然数吗(小
    大家好,这是汇总的六年级数学下册第一单元“负数”的重点。稍后会上传一道负数的相关习题视频。1、负数的由来:为了表示相反意义的两个量(如盈利亏损、收入支出……),光有学过的0 1 3.4 ……是远远不够的。所以出现了负数,以盈利为正、亏损为负
    06-04
  • 三年级数学试卷分析(三年级数学期中测评卷)
    三年级数学试卷分析(三年级数学期中测评卷)
    此卷有许多易错题,在解答过程中,一定要认真对待,事后要对错题进行分析,找出原因,再进行针对性巩固。01填空部分1、此题考查对长度单位、重量单位、时间单位的理解与灵活运用。3、厘米尺,每一个小格表示1毫米,每一个大格表示10毫米,即1厘米。6
    05-30
点击排行