重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
Oracle中層次查詢語法:
select ...
[level | connect_by_root |connect_by_isleaf |connect_by_iscycle ]
from table_name
[where]
connect by { prior col1=col2 | col1=prior col2 }
[start with]
[order [siblings] by];
connect by :說明每行數據將是按層次順序檢索,并規定將表中的數據連入樹形結構的關系中。prior運算符必須放置在連接關系的兩列中某一個的前面,對于子節點間的父子關系,prior運算符所在的一側為父節點,另一側的為子節點,從而確定查找樹形結構的順序是自頂向下還是自底向上。
start with:用于標識哪個節點作為查找樹形結構的根節點,層次查詢需要確定起始點,通過start with,后加條件。start with將確定將哪行作為root,如果不指定start with,則每行都當做root,然后查找其后代。start with后可以跟子查詢,如果又where條件,則會截斷層次中滿足相關條件的節點,但不影響整個層次查詢。
level:是一個偽列,代表當前這個節點所在的層級,對于根節點,level返回1,通過這個偽列結合其他oracle函數進行數據的格式化顯示。
connect_by_root:connect_by_root必須和某個字段搭配使用,目的是獲取根節點記錄的字段信息。
connect_by_isleaf:判斷當前結點是否為葉子節點,0表示非葉子節點,1表示是葉子節點。
connect_by_cycle:可以檢查是否在樹形查詢的過程中構成循環,這個偽列只是在connect_by_cycle方式下有效。
order siblings by:定義返回時同意父節點下的各個兄弟節點之間的順序。
例子:
--樹形結構表emp; select * from emp; EMP_ID EMP_NAME UP_EMP_ID --------- --------------- --------------- 1 USER1 0 2 USER2 1 3 USER3 1 4 USER4 2 5 USER5 2 6 USER6 3 --從根節點emp_id=1開始,自頂向下查詢出根節點的所有子節點 select emp_id,emp_name,up_emp_id,level from emp start with emp_id=1 connect by prior emp_id=up_emp_id order siblings by emp_id; EMP_ID EMP_NAME UP_EMP_ID LEVEL --------- --------------- --------------- -------- 1 USER1 0 1 2 USER2 1 2 4 USER4 2 3 5 USER5 2 3 3 USER3 1 2 6 USER6 3 3 --從emp_id=6,自底向上查詢emp_id=6的所有父節點 select emp_id,emp_name,up_emp_id from emp start with emp_id=6 connect by emp_id = prior up_emp_id order by emp_id; EMP_ID EMP_NAME UP_EMP_ID --------- --------------- --------------- 1 USER1 0 3 USER3 1 6 USER6 3另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。