資料庫遞迴查詢

2021-06-20 23:03:16 字數 1591 閱讀 3323

今天工作看同事**用到了start with...connect by prior,不知道什麼意思,查詢了一些資料,以下是比較好理解的。

oracle中的select語句可以用start with...connect by prior子句實現遞迴查詢,connect by 是結構化查詢中用到的,其基本語法是:

select ... from

where

start with

connect by ;

:過濾條件,用於對返回的所有記錄進行過濾。

:查詢結果重起始根結點的限定條件。

:連線條件

資料組織結構如下圖:

資料庫表結構如下:

create table t2(

root_id number,

id number,

name varchar(5),

description varchar(10)

);insert into t2(root_id,id,name,description) values(0,1,'a','aaa');

insert into t2(root_id,id,name,description) values(1,2,'a1','aaa1');

insert into t2(root_id,id,name,description) values(1,3,'a2','aaa2');

insert into t2(root_id,id,name,description) values(0,4,'b','bbb');

insert into t2(root_id,id,name,description) values(4,5,'b1','bbb1');

insert into t2(root_id,id,name,description) values(4,6,'b2','bbb2');

獲取完整樹:

獲取特定子樹:

如果connect by prior中的prior被省略,則查詢將不進行深層遞迴。

如:select * from t2 start with root_id = 0 connect by id = root_id;

select * from t2 start with id = 1 connect by id = root_id;

如:

資料庫遞迴查詢(CET)

if object id ta isnotnull droptable ta go createtableta id int,name nvarchar 4 parentid nvarchar 2 go insertintota select1,河北省 0 unionall select2,邢台市 ...

關於資料庫的遞迴查詢

1 oracle 以scott.emp表舉例 empno是人員編號,mgr是上級領導 也就是上級人員編碼 1 從上到下查詢 該查詢查詢員工jones下屬所有的員工 select emp.from emp start with ename jones connect by mgr prior empn...

遞迴查詢資料庫分銷上級

太陽線為準 團隊中所有的uid 一般情況最多10個 關於向上去找,還是向下去找,這裡取個巧 先比較下他們的uid大小,uid大的一定是後面註冊上來的 所以,以uid為大的來向上查詢 public function team tree uid,level 1 this team tree parent...