可用版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

CONNECT_BY_ROOT

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

CONNECT_BY_ROOT 运算符允许访问行的层次结构根行,并对该根行评估表达式。

SELECT
  child,
  parent,
  sys_connect_by_path(child, '/'),
  connectByRoot(child)
FROM (
  VALUES
    (1, null),
    (2, 1),
    (3, null),
    (4, 3)
) AS t (child, parent)
START WITH
  parent IS NULL
CONNECT BY NOCYCLE
  PRIOR child = parent;
Field<Integer> child = field("child", INTEGER);
Field<Integer> parent = field("parent", INTEGER);

create.select(
            child,
            parent,
            sysConnectByPath(child, "/"),
            connectByRoot(child))
      .from(values(
            row(val(1), val(null, INTEGER)),
            row(2, 1),
            row(val(3), val(null, INTEGER)),
            row(4, 3)).as(table("t"), child, parent))
      .startWith(parent.isNull())
      .connectByNoCycle(prior(child).eq(parent))
      .fetch();

例如,结果是

+-------+--------+---------------------+-----------------+
| child | parent | sys_connect_by_path | connect_by_root |
+-------+--------+---------------------+-----------------+
|     1 | {null} | /1                  |               1 |
|     2 |      1 | /1/2                |               1 |
|     3 | {null} | /3                  |               3 |
|     4 |      3 | /3/4                |               3 |
+-------+--------+---------------------+-----------------+

方言支持

此示例使用 jOOQ

connectByRoot(AUTHOR.ID)

翻译成以下特定方言的表达式

Exasol、Informix、Oracle、Snowflake

connect_by_root AUTHOR.ID

ASE、Access、Aurora MySQL、Aurora Postgres、BigQuery、ClickHouse、CockroachDB、DB2、Databricks、Derby、DuckDB、Firebird、H2、HSQLDB、Hana、MariaDB、MemSQL、MySQL、Postgres、Redshift、SQLDataWarehouse、SQLServer、SQLite、Sybase、Teradata、Trino、Vertica、YugabyteDB

/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

您对此页面有任何反馈吗?我们很乐意听取您的意见!

The jOOQ Logo