选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

CONNECT BY 子句

聚焦模式
CONNECT BY 子句 - Amazon Redshift

CONNECT BY 子句指定层次结构中行之间的关系。您可以使用 CONNECT BY 按层次结构顺序选择行,方法是将表联接到表本身并处理分层数据。例如,您可以使用它以递归方式循环浏览组织结构图和列出数据。

分层查询按以下顺序处理:

  1. 如果 FROM 子句有联接,则首先对其进行处理。

  2. 对 CONNECT BY 子句求值。

  3. 对 WHERE 子句求值。

语法

[START WITH start_with_conditions] CONNECT BY connect_by_conditions
注意

虽然 START 和 CONNECT 不是保留字,但如果您在查询中使用 START 和 CONNECT 作为表别名,请使用分隔标识符(双引号)或 AS,以避免在运行时失败。

SELECT COUNT(*) FROM Employee "start" CONNECT BY PRIOR id = manager_id START WITH name = 'John'
SELECT COUNT(*) FROM Employee AS start CONNECT BY PRIOR id = manager_id START WITH name = 'John'

参数

start_with_conditions

指定层次结构根行的条件

connect_by_conditions

指定层次结构的父行和子行之间关系的条件。必须使用用于引用父行的 一元运算符限定至少一个条件。

PRIOR column = expression -- or expression > PRIOR column

运算符

您可以在 CONNECT BY 查询中使用以下运算符。

LEVEL

返回层次结构中当前行级别的伪列。为根行返回 1,为根行的子行返回 2,依此类推。

PRIOR

一元运算符,用于计算层次结构中当前行的父行的表达式。

示例

以下示例是 CONNECT BY 查询,该示例返回直接或间接向 John 报告的员工数量,不超过 4 个级别。

SELECT id, name, manager_id FROM employee WHERE LEVEL < 4 START WITH name = 'John' CONNECT BY PRIOR id = manager_id;

以下是查询的结果。

id name manager_id ------+----------+-------------- 101 John 100 102 Jorge 101 103 Kwaku 101 110 Liu 101 201 Sofía 102 106 Mateo 102 110 Nikki 103 104 Paulo 103 105 Richard 103 120 Saanvi 104 200 Shirley 104 205 Zhang 104

此示例的表定义:

CREATE TABLE employee ( id INT, name VARCHAR(20), manager_id INT );

以下是插入到表中的行。

INSERT INTO employee(id, name, manager_id) VALUES (100, 'Carlos', null), (101, 'John', 100), (102, 'Jorge', 101), (103, 'Kwaku', 101), (110, 'Liu', 101), (106, 'Mateo', 102), (110, 'Nikki', 103), (104, 'Paulo', 103), (105, 'Richard', 103), (120, 'Saanvi', 104), (200, 'Shirley', 104), (201, 'Sofía', 102), (205, 'Zhang', 104);

以下是 John 所在部门的组织结构图。

John 所在部门的组织结构图。

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。