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
反馈
您对此页面有任何反馈吗?我们很乐意听取您的意见!