在Oracle層次查詢中給SIBLINGS排序
例如,列表A中的查詢從Oracle HR樣本模式的EMPLOYEES表中生成一個“Reports To”列表。
|
LEVEL偽列表明報告當前巢狀的深度,這裡我使用LPAD僱員姓名對它們進行縮排。START WITH條件指出只有僱員101和102被認為是起點。然後CONNECT BY PRIOR子句將一行中的employee_id列與另一行的manager_id列連線起來,指出誰向誰報告。
如果你在HR模式中執行這個查詢,你會注意到某個經理列表中的姓沒有分類,它們以Oracle在處理層次時遇到它們的順序排列。
如果你希望下屬以字母順序排列,你可以嘗試對原始的last_name列使用ORDER BY。但是,這樣會破壞層次,把它變回一個單調的姓名列表。
你還可以首先對偽列LEVEL使用ORDER BY,它說明某個特殊行在層次中的深度。這同樣也會破壞層次,首先會列出所有的經理,然後是向他們報告的僱員。
在Oracle 10g(兩個版本)中,現在很容易實現這一點:你可以使用新的SIBLINGS關鍵字建立正確的順序。其語法如下:
|
因此在查詢結尾處增加下面這個子句:
|
將會保護層次,並在每個等級中以字母順序排列僱員的姓。注意最初的last_name用作“Reports To”的別名。“Reports To”中的額外空間會影響排序,因此必須使用最初的last_name。列表B中是增加ORDER SIBLINGS BY前後的輸出結果。
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/64429/viewspace-915952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【層次查詢】Hierarchical Queries之親兄弟間的排序(ORDER SIBLINGS BY)排序
- Oracle層次化查詢Oracle
- Oracle層次查詢和分析函式在號段選取中的應用Oracle函式
- Oracle層次查詢和分析函式在號段選取中的應用(轉)Oracle函式
- Oracle層次查詢中connect_by_iscycle偽列的取值研究Oracle
- informix 中層次/樹型/Hierarchical查詢的使用ORM
- 0629_層次查詢
- 【層次查詢】Hierarchical Queries之LEVEL應用
- 在oracle查詢記錄時給記錄加鎖(轉)Oracle
- 每日一練(24):在排序陣列中查詢數字排序陣列
- 資料庫開發基礎--層次查詢+資料庫
- 資料庫開發基礎---層次查詢資料庫
- 【層次查詢】Hierarchical Queries之“樹的遍歷”
- 【層次查詢】Hierarchical Queries之處理順序
- 查詢與排序02,折半查詢排序
- 陣列中查詢給定值陣列
- 排序和查詢排序
- 【--SQL基礎-->層次化查詢(START BY ... CONNECT BY PRIOR)】SQL
- 在 with 查詢中只查詢個別欄位
- 在RFT中根據指定的標題查詢頂層視窗
- Oracle中實現查詢結果按照in中條件排序 InStr函式Oracle排序函式
- 在Oracle中查詢儲存過程和函式Oracle儲存過程函式
- 在Oracle中進行大小寫不敏感的查詢Oracle
- 【SQL 學習】層次化查詢之CONNECT BY 和 START WITHSQL
- 【層次查詢】Hierarchical Queries之CONNECT_BY_ISCYCLE偽列
- 【層次查詢】Hierarchical Queries之CONNECT_BY_ISLEAF偽列
- SQL Cookbook—查詢、排序SQL排序
- 常見物件-在大串中查詢小串出現的次數案例物件
- 查詢與排序05,氣泡排序排序
- 查詢與排序04,插入排序排序
- 查詢與排序03,選擇排序排序
- Oracle多層級查詢相容的效能問題Oracle
- 在Oracle中進行大小寫不敏感的查詢[zt]Oracle
- 【層次查詢】Hierarchical Queries之SYS_CONNECT_BY_PATH函式函式
- oracle資料庫sql查詢檢視第二次查詢很慢Oracle資料庫SQL
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- 資料庫排序查詢資料庫排序
- Django 2.0 模型層中 QuerySet 查詢操作介紹Django模型