a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

如何在Oracle層次查詢中給SIBLINGS排序

2024-08-29 13:52:31
字體:
來源:轉載
供稿:網友
Oracle SELECT語句中的START WITH和CONNECT BY子句自動阻斷一個層次。缺少這項特性,就需要一個復雜的自聯接來確定行之間的邏輯聯系。START WITH子句指定被認為是層次起點,或“根”的一行或幾行。然后CONNECT BY PRIOR子句指明哪些行彼此關聯。

例如,列表A中的查詢從Oracle HR樣本模式的EMPLOYEES表中生成一個“Reports To”列表。

column "Reports To" format a30set pagesize 9999SELECT LPAD(' ', 2*(LEVEL-1))||last_name "Reports To", employee_idFROM employeesSTART WITH employee_id IN (101, 102)CONNECT BY PRIOR employee_id = manager_id/

列表A

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關鍵字建立正確的順序。其語法如下:

ORDER SIBLINGS BY <expression>

因此在查詢結尾處增加下面這個子句:

ORDER SIBLINGS BY last_name

將會保護層次,并在每個等級中以字母順序排列雇員的姓。注意最初的last_name用作“Reports To”的別名。“Reports To”中的額外空間會影響排序,因此必須使用最初的last_name。列表B中是增加ORDER SIBLINGS BY前后的輸出結果。

SQL> @siblings_without_orderbyReports To                     EMPLOYEE_ID                                      ------------------------------ -----------                                      Kochhar                            101                                      Whalen                             200                                      Mavris                             203                                      Baer                               204                                      Higgins                            205                                      Gietz                              206                                      Greenberg                          108                                      Faviet                             109                                      Chen                               110                                      Sciarra                            111                                      Urman                              112                                      Popp                               113                                      De Haan                            102                                      Hunold                             103                                      Ernst                              104                                      Austin                             105                                      Pataballa                          106                                      Lorentz                            107                                      18 rows selected.SQL> @siblings_with_orderbyReports To                     EMPLOYEE_ID                                      ------------------------------ -----------                                      De Haan                            102                                      Hunold                             103                                      Austin                             105                                      Ernst                              104                                      Lorentz                            107                                      Pataballa                          106                                      Kochhar                            101                                      Baer                               204                                      Greenberg                          108                                      Chen                               110                                      Faviet                             109                                      Popp                               113                                      Sciarra                            111                                      Urman                              112                                      Higgins                            205                                      Gietz                              206                                      Mavris                             203                                      Whalen                             200                                      18 rows selected.SQL>

列表B

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 婷婷成人免费视频 | 日韩欧美视频一区二区三区 | 天堂在线免费视频 | 综合精品久久久 | 国产精品视频免费 | 欧美综合国产精品久久丁香 | 国产资源在线观看 | 欧美男人天堂 | 国产成人涩涩涩视频在线观看 | www在线看片 | 男人的天堂视频 | 日韩精品 电影一区 亚洲 | 国产精品久久久久久久久久久新郎 | 午夜寂寞少妇aaa片毛片 | 91免费观看在线 | 日韩av在线一区二区三区 | 国产日韩欧美一区 | 午夜社区| 国产精品久久久999 日本在线免费观看 | 国产精品久久久久久久久久免费看 | 日韩视频在线观看中文字幕 | 欧洲成人午夜免费大片 | 日韩精品一区二区三区老鸭窝 | 日本天堂网站 | 免费看国产一级特黄aaaa大片 | 国产精品美女在线观看直播 | 欧美白人做受xxxx视频 | 欧美一区二区三区四区在线观看 | 欧美日韩国产一区二区三区 | 日韩综合在线 | 狠狠做深爱婷婷久久综合一区 | 成人伊人| 精品一区二区在线观看 | 欧美午夜视频在线观看 | 日产精品久久久一区二区 | 污网址在线免费观看 | 久99视频| 色就是色欧美 | 国产精品婷婷午夜在线观看 | 日韩免费网站 | 精品影院|