日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle connect by用法

發布時間:2025/6/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle connect by用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

先用scott用戶下的emp表做實驗.
emp表有個字段,一個是empno(員工編號),另一個是mgr(上級經理編號)
下面是表中所有數據

?

?

1 select?* from?emp start with?empno=7698 connect?by??mgr=prior?empno;

?

執行結果如下:

?

?

得到的結果是empno=7698的數據,以及會得到mgr=7698的數據。
它是向下遞歸的, 即我們從empno=7698開始遍歷,去找出mgr=7698的所有數據S(用S代表查出的所有數據.), 然后在從S中的empno的值去匹配查找是否還有滿足,mgr in (s.empno)的數據。一直遍歷進去到沒有數據為止。?

?

?下面的這個可以詳細的表述效果。

?

1 2 --向下遞歸遍歷 select?* from?emp connect?by?mgr= prior?empno start with?empno=7839;

?

執行結果如下:

?

?

1 2 --向上遞歸遍歷 select * from emp connect by prior mgr=empno start with empno=7844;

?

執行結果如下:

?

?

這樣直到沒有匹配的數據為止。
以上只是簡單的舉了個例子。

?

connect by是結構化查詢中用到的,其基本語法是:

?

1 2 3 4 select?... from?tablename start by?cond1 connect?by?cond2 where?cond3

?

簡單說來是將一個樹狀結構存儲在一張表里,比如一個表中存在兩個字段(如emp表中的empno和mgr字段):empno, mgr那么通過表示每一條記錄的mgr是誰,就可以形成一個樹狀結構。

?

用上述語法的查詢可以取得這棵樹的所有記錄。
其中:
cond1是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。
cond2是連接條件,其中用prior表示上一條記錄,比如connect by prior id=praentid就是說上一條記錄的id是本條記錄的praentid,即本記錄的父親是上一條記錄。
cond3是過濾條件,用于對返回的所有記錄進行過濾。
prior和start with關鍵字是可選項
prior運算符必須放置在連接關系的兩列中某一個的前面。對于節點間的父子關系,prior運算符在一側表示父節點,在另一側表示子節點,從而確定查找樹結構是的順序是自頂向下還是自底向上。在連接關系中,除了可以使用列名外,還允許使用列表達式。
start with子句為可選項,用來標識哪個節點作為查找樹型結構的根節點。若該子句被省略,則表示所有滿足查詢條件的行作為根節點。

?

轉載于:https://www.cnblogs.com/Look_Sun/p/4435378.html

總結

以上是生活随笔為你收集整理的oracle connect by用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。