當前位置:歷史故事大全網 - 歷史上的今天 - ORACLE選擇遞歸查詢

ORACLE選擇遞歸查詢

START WITH定義了數據行查詢的初始起點;

CONNECT BY prior定義表中各行的關聯方式;

如果connect by後的“prior”為默認,則只能查詢符合條件的起始行,不進行遞歸查詢;

條件二:col_1 = col_2,col_1是父鍵(標識父),col_2是子鍵(標識子)。

條件3在遞歸前過濾對應的節點及其子節點,如果上級節點不滿足,則自動過濾掉下級節點;

條件4遞歸後過濾對應的節點或子節點,如果上級節點不滿足,下級節點自動提升壹級。

系統偽列:

CURRVAL和NEXTVAL對序列號使用保留字。

ROWID記錄的唯壹標識。

ROWNUM限制查詢結果集的數量。

級別顯示層次結構樹中特定行的層次結構或級別。

CONNECT_BY_ROOT返回當前層的根節點(當前行數據對應的最高層節點的內容)。

SYS _ CONNECT _ BY _ PATH(& lt;column & gt,& ltchar & gt)函數實現會以“路徑”或層次元素列表的形式顯示從父節點到當前行的內容。

CONNECT_BY_ISCYCLE必須采用參數NOCYCLE。父節點的內容在當前行被引用,樹中有壹個循環。如果循環顯示“1”,否則顯示“0”。

CONNECT_BY_ISLEAF確定當前行是否是葉。如果壹個葉子顯示“1”,如果不是葉子而是分支(比如當前內容是其他行的父),則顯示“0”。

在Oracle 10g中,只要指定“NOCYCLE”就可以執行任何查詢操作。還有壹個偽列與這個關鍵字相關——connect _ by _ is cycle。如果當前行引用了父節點的內容,並且樹中有循環,則該行偽列顯示“1”,否則顯示“0”。

例子

-創建測試表,增加測試數據。

創建表測試(superid varchar2(20),id varchar2(20),MC varchar 2(20));

插入到測試值中(“0”,“1”,“a 1”);

插入到測試值中(“0”、“2”、“A2”);

插入測試值(' 1 ',' 11 ',' a 11 ');

插入到測試值中(“1”、“12”、“a 12”);

插入到測試值中(“2”,“21”,“a 21”);

插入到測試值中(“2”、“22”、“A22”);

插入測試值(' 11 ',' 111 ',' a 111 ');

插入測試值(' 11 ',' 112 ',' a 112 ');

插入測試值(' 12 ',' 121 ',' a 121 ');

插入到測試值中(“12”、“122”、“a 122”);

插入測試值(' 21 ',' 211 ',' a 211 ');

插入測試值(' 21 ',' 212 ',' a 212 ');

插入到測試值中(“22”,“221”,“a 221”);

插入到測試值中(“22”、“222”、“A222”);

提交;

-分層查詢示例

Select level||' level' JC,lpad(',(level-1) * 4) || id id,MC。

來自測試

以superid = '0 '開始,通過prior id=superid連接;

Select level | | | ' level ' JC,connect _ by _ isleafmxf,lpad(',(level-1) * 4) || id id,MC。

來自測試

以superid = '0 '開始,通過prior id=superid連接;

-首先給出“數據庫字符串分組加四”中的兩個例子來理解...連接方式。...

-函數:按superid分組,並使用“;”confix

-實現:下面兩個例子都是通過構造兩個偽列來連接的。

  • 上一篇:美團是哪個國家的軟件?
  • 下一篇:中國古代建築的主要時期有哪些?
  • copyright 2024歷史故事大全網