Oracle和Mysql遞迴
oracle對於樹形查詢可以使用start with ... connect by
select * from menu start with id='130000' connect by id = prior parent_id;
mysql隨沒有自帶的語法支援,不過可以通過建立函式來實現遞迴查詢
SELECT id AS ID,pid AS 父ID ,levels AS 父到子之間級數, paths AS 父到子路徑 FROM (
SELECT id,pid,
@le:= IF (pid = 0 ,0,
IF( LOCATE( CONCAT('|',pid,':'),@pathlevel) > 0 ,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',pid,':'),-1),'|',1) +1
,@le+1) ) levels
, @pathlevel:= CONCAT(@pathlevel,'|',id,':', @le ,'|') pathlevel
, @pathnodes:= IF( pid =0,',0',
CONCAT_WS(',',
IF( LOCATE( CONCAT('|',pid,':'),@pathall) > 0 ,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',pid,':'),-1),'|',1)
,@pathnodes ) ,pid ) )paths
,@pathall:=CONCAT(@pathall,'|',id,':', @pathnodes ,'|') pathall
FROM treenodes,
(SELECT @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vv
ORDER BY pid,id
) src
ORDER BY id
參考:
相關文章
- 遞迴和尾遞迴遞迴
- Oracle with使用方法以及遞迴Oracle遞迴
- 遞迴和遞推總結遞迴
- 什麼是遞迴?遞迴和迴圈的異同遞迴
- ?30 秒瞭解尾遞迴和尾遞迴優化遞迴優化
- 尾呼叫和尾遞迴遞迴
- 漢諾塔和遞迴遞迴
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- JavaScript和ABAP的尾遞迴JavaScript遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 資料庫遞迴查詢:MySQL VS Sequelize資料庫遞迴MySql
- 遞迴遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- 遞迴優化:尾呼叫和Memoization遞迴優化
- 【TVM 教程】線性和遞迴核遞迴
- 遞迴、分治和動態規劃遞迴動態規劃
- leetcode題解(遞迴和回溯法)LeetCode遞迴
- 目標和——遞迴的實踐遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- MYSQL: 表表示式(CTE)實現遞迴例項MySql遞迴
- Oracle優化案例-定位start with connect by遞迴死迴圈資料(二十二)Oracle優化遞迴
- go 遞迴Go遞迴
- JavaScript遞迴JavaScript遞迴
- 分而治之-遞迴遞迴
- 理解遞迴遞迴
- 對遞迴和迭代的效率的思考和分析遞迴
- python 遞迴樹狀結構 和 排序Python遞迴排序
- 遞迴的列印和階乘運用遞迴
- 我對遞迴的理解和總結遞迴
- 遞迴的應用場景和呼叫機制、遞迴需要遵守的重要規則遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 迭代與遞迴--你被遞迴搞暈過嗎?遞迴
- python 遞迴和二分法Python遞迴
- 資料結構和演算法:遞迴資料結構演算法遞迴
- 大模型原理:遞迴、壓縮和模式匹配大模型遞迴模式