国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵊泗县| 渝北区| 广宁县| 尉犁县| 进贤县| 凉城县| 甘南县| 克拉玛依市| 沙湾县| 伊川县| 湟源县| 肥东县| 通江县| 施秉县| 区。| 辽中县| 南乐县| 广水市| 洞口县| 玉林市| 云浮市| 汨罗市| 镶黄旗| 益阳市| 垣曲县| 新蔡县| 观塘区| 德兴市| 华宁县| 尼勒克县| 大余县| 合山市| 安义县| 武义县| 弥勒县| 正阳县| 尖扎县| 休宁县| 安岳县| 仁怀市| 勃利县|