全部產品
Search
文件中心

PolarDB:分層查詢

更新時間:Mar 13, 2025

分層查詢是一種查詢類型,它根據構成父子關係的資料按層次順序返回結果集的行。

階層通常由一個倒置的樹形結構表示。該樹由相互串連的節點群組成。每個節點可串連到一個或多個子節點,也可不串連到子節點。每個節點都串連到一個父節點,但沒有父級的頂級節點之外。此節點為根節點。每個樹都只有一個根節點。沒有任何子級的節點稱為分葉節點。樹始終至少有一個分葉節點;例如,最簡單的情況是樹由單個節點群組成。在這種情況下,該節點既是根又是葉。

在分層查詢中,結果集的行表示一個或多個樹的節點。

說明

單個給定行可能出現在多個樹中,因而在結果集中會出現多次。

查詢中的層次關係由CONNECTBY子句描述,該子句構成了結果集中返回行的順序的基礎。下面顯示了CONNECT BY子句及其關聯的可選子句出現在SELECT命令中的上下文。

SELECT select_list FROM table_expression [ WHERE ...]
  [ START WITH start_expression ]
    CONNECT BY { PRIOR parent_expr = child_expr |
 child_expr = PRIOR parent_expr }
  [ ORDER SIBLINGS BY column1 [ ASC | DESC ]
      [, column2 [ ASC | DESC ] ] ...
  [ GROUP BY ...]
  [ HAVING ...]
  [ other ...]

select_list是一個或多個運算式,它構成了結果集的欄位。table_expression是一個或多個表或視圖,結果集的行源於這些表或視圖。other是任何其他合法的SELECT命令子句。與分層查詢相關的子句START WITH、CONNECT BY和ORDER SIBLINGS BY將在以下各節中予以介紹。

說明

目前PolarDB PostgreSQL版(相容Oracle)不支援在CONNECT BY子句中使用AND(或其他運算子)。