【oracle】-函數:遞歸函數(start with)...


0、前言

​ 我們可能會碰到這種需求:一個表的字段為id,pid(父id);我們需要通過id找到他的所有父節點。

​ 在oracle中提供了start with的遞歸函數操作,可以達到上述的要求



1、語法

SELECT ... FROM    【表名】
WHERE              【條件3】
START WITH         【條件1】
CONNECT BY PRIOR   【條件2】


2、使用

2.1 向上查找(父=子)

2.1.1 需求

​ 找到empno為7369的所有領導。


2.1.2 sql語句

表字段連接關系:mgr為領導編號

select t.*,t.rowid from emp t 
	start with t.empno = 7369  		     --從empno為7369的開始查找
	connect by prior t.mgr = t.empno;    --上一條數據(這里就是empno為7369)的mgr == 當前遍歷這一條數據的empno(那么就會找到empno為7902的用戶)

2.1.3 查詢結果



2.2 向下查找(子=父)

2.2.1 需求

​ 找到empno為7566的所有下屬


2.2.2 sql語句
select t.*,t.rowid from emp t 
	start with t.empno = 7566 
	connect by prior t.empno = t.mgr;

2.2.3 查詢結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM