亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

oracle遞歸查詢函數(shù) oracle遞歸查詢語句


oracle遞歸查詢函數(shù) oracle遞歸查詢語句

文章插圖
眾所周知,目前的mysql版本中并不支持直接的遞歸查詢,但是通過遞歸到迭代轉(zhuǎn)化的思路,還是可以在一句SQL內(nèi)實現(xiàn)樹的遞歸查詢的 。這個得益于Mysql允許在SQL語句內(nèi)使用@變量 。以下是示例代碼 。
創(chuàng)建表格
CREATE TABLE `lf_ctrl_trade` (`TRADEID` int , -- 節(jié)點ID`nodename` varchar (60), -- 節(jié)點名稱`PARENTID` int-- 節(jié)點父ID); 方案一:
SELECT TRADEID AS ID,PARENTID AS 父ID ,levels AS 父到子之間級數(shù), 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 ,'|') pathallFROMlf_ctrl_trade,(SELECT @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vvORDER BYPARENTID,TRADEID) srcORDER BY TRADEID方案二:
創(chuàng)建函數(shù)
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))


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: