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遞迴(二)Oracle遞迴
- oracle遞迴(一)Oracle遞迴
- ORACLE 遞迴查詢Oracle遞迴
- 遞迴和遞推總結遞迴
- 遞迴sql的功率到達MySQL和MariaDB遞迴MySql
- Oracle遞迴查詢sqlOracle遞迴SQL
- 漢諾塔和遞迴遞迴
- ?30 秒瞭解尾遞迴和尾遞迴優化遞迴優化
- Oracle with使用方法以及遞迴Oracle遞迴
- Oracle SQL的遞迴查詢OracleSQL遞迴
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 斐波那契數列的遞迴和非遞迴實現遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- Mysql 實現樹狀遞迴查詢MySql遞迴
- mysql處理遞迴的一個例子MySql遞迴
- JavaScript和ABAP的尾遞迴JavaScript遞迴
- 遞迴遞迴
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- ACM(遞迴遞推—A)ACM遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 斐波那契數列(Fibonacci)遞迴和非遞迴實現遞迴
- 資料庫遞迴查詢:MySQL VS Sequelize資料庫遞迴MySql
- 遞迴優化:尾呼叫和Memoization遞迴優化
- 目標和——遞迴的實踐遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- ACM(遞迴遞推—I)ACM遞迴
- JavaScript遞迴JavaScript遞迴
- go 遞迴Go遞迴
- 理解遞迴遞迴
- 遞迴 Java遞迴Java
- Oracle中 connect by prior 遞迴演算法Oracle遞迴演算法
- Oracle按固定次數遞迴生成日期Oracle遞迴
- MYSQL: 表表示式(CTE)實現遞迴例項MySql遞迴