
文章插圖
眾所周知,目前的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)容,希望對您有所幫助:- 領(lǐng)證日子查詢 2022年農(nóng)歷三月最佳領(lǐng)證日期
- 領(lǐng)證日子查詢 2022年農(nóng)歷一月最佳領(lǐng)證日期
- 領(lǐng)證日子查詢 2022年農(nóng)歷五月最佳領(lǐng)證日期
- 大學(xué)畢業(yè)檔案超過兩年怎么辦 個人檔案如何查詢
- 領(lǐng)證日子查詢 2022年農(nóng)歷七月最佳領(lǐng)證日期
- 領(lǐng)證日子查詢 2022年農(nóng)歷十一月最佳領(lǐng)證日期
- 領(lǐng)證日子查詢 2022年農(nóng)歷九月最佳領(lǐng)證日期
- 2022年屬猴領(lǐng)證日期 領(lǐng)證的好日子查詢
- 2022年屬豬領(lǐng)證日期 領(lǐng)證的好日子查詢
- 闖紅燈幾天可以查到違章信息 查詢違章最快的方法
