国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东光县| 遂川县| 白河县| 渭源县| 利川市| 广宗县| 西丰县| 景宁| 兴义市| 石景山区| 云霄县| 青浦区| 屏东县| 重庆市| 松江区| 永兴县| 仁怀市| 承德市| 镇赉县| 麻阳| 普兰县| 且末县| 韩城市| 阿尔山市| 北安市| 安国市| 黄梅县| 东至县| 汪清县| 青海省| 北流市| 朔州市| 松潘县| 保德县| 化德县| 庆安县| 利津县| 齐河县| 金门县| 巴彦淖尔市| 班玛县|