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