Oracle當中層次查詢

來源:互聯網
上載者:User

層次查詢的概念

文法格式:

   select [level],column, expr... from table

  [where condition]

  start with condition

  connect by [prior column1= column2 |

  column1 = prior column2];

層次查詢是通過start with和connect by子句標識的:

1、其中level關鍵字是可選的,表示等級,1表示root,2表示root的child,其他相同的規則。

2、From之後可以是table,view但是只能是一個table。

3、Where條件限制了查詢返回的行,但是不影響層次關係,屬於將節點截斷,但是這個被截斷的節點的下層child不受影響。

4、Start with是表示開始節點,對於一個真實的層次關係,必須要有這個子句,但是不是必須的。

5、connect by prior是指定父子關係,其中prior的位置不一定要在connect by之後,對於一個真實的層次關係,這也是必須的。

樣本:在自串連中,資料量大的話會出現笛卡爾集的情況

SQL> --通過表的別名,將同一張表視為多張表

SQL> select e.ename||'的老闆是'||b.ename

  2  from emp e,emp b

  3  where e.mgr=b.empno;

結果:

為了避免這種情況的發生,就使用Oracle當中的層次查詢,那下面呢,我就這張圖畫一張樹形關係圖

層次查詢樣本:

SQL> --執行層次查詢

SQL> select level,empno,ename,mgr

  2  from emp

  3  connect by prior empno=mgr

  4  start with mgr is null

  5  order by 1;

結果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.