LATERAL
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
LATERAL 是一个 SQL 标准表运算符,用于包装派生表(或其他表表达式,在某些方言中),使得 LATERAL 派生表之前声明的表和列进入作用域。有关替代方案,SQL Server 特定的语法,请参阅 APPLY。
一个例子
SELECT *
FROM
AUTHOR,
-- All previous objects (i.e. AUTHOR)
-- are now in scope for the following subquery
LATERAL (
SELECT count(*)
FROM BOOK
WHERE BOOK.AUTHOR_ID = AUTHOR.ID -- AUTHOR is in scope
);
DSL.using(configuration)
.select()
.from(
AUTHOR,
lateral(
select(count()
.from(BOOK)
.where(BOOK.AUTHOR_ID.eq(AUTHOR.ID)))
)
)
.fetch();
select().from(AUTHOR, lateral(selectCount().from(BOOK).where(BOOK.AUTHOR_ID.eq(AUTHOR.ID))))
翻译成以下特定方言的表达式
Aurora Postgres、CockroachDB、DB2、Databricks、Firebird、Hana、MySQL、Oracle、Postgres、Snowflake、Sybase、Trino、YugabyteDB
SELECT
AUTHOR.ID,
AUTHOR.FIRST_NAME,
AUTHOR.LAST_NAME,
AUTHOR.DATE_OF_BIRTH,
AUTHOR.YEAR_OF_BIRTH,
AUTHOR.DISTINGUISHED,
alias_124651337.count
FROM
AUTHOR,
LATERAL (
SELECT count(*)
FROM BOOK
WHERE BOOK.AUTHOR_ID = AUTHOR.ID
) alias_124651337
SQLDataWarehouse、SQLServer
SELECT
AUTHOR.ID,
AUTHOR.FIRST_NAME,
AUTHOR.LAST_NAME,
AUTHOR.DATE_OF_BIRTH,
AUTHOR.YEAR_OF_BIRTH,
AUTHOR.DISTINGUISHED,
alias_124651337.count
FROM AUTHOR
CROSS APPLY (
SELECT count(*)
FROM BOOK
WHERE BOOK.AUTHOR_ID = AUTHOR.ID
) alias_124651337
ASE、Access、Aurora MySQL、BigQuery、ClickHouse、Derby、DuckDB、Exasol、H2、HSQLDB、Informix、MariaDB、MemSQL、Redshift、SQLite、Teradata、Vertica
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!