表作为SelectField
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
一个 org.jooq.Table
表达式扩展了 org.jooq.SelectField
类型,因此,它可以直接用在 SELECT 子句中,也可以用在任何接受 SelectField
的地方,例如 嵌套记录中。 这对于 (生成的)表引用特别有用。 下面展示了如何投影一个嵌套的 org.jooq.TableRecord
Result<Record2<AuthorRecord, BookRecord>> result = create.select(AUTHOR, BOOK) .from(AUTHOR) .join(BOOK).on(AUTHOR.ID.eq(BOOK.AUTHOR_ID)) .fetch();
这与 隐式连接配合得很好
Result<Record2<AuthorRecord, BookRecord>> result = create.select(BOOK.author(), BOOK) .from(BOOK) .fetch();
在底层,实现可以是方言中的原生实现(例如 PostgreSQL),也可以使用常见的 嵌套记录模拟进行模拟。
使用此语法嵌套表与使用 TABLE.asterisk() 语法不同,后者不会嵌套表,而是将其字段展平到周围的投影中。
方言支持
此示例使用 jOOQ
select(BOOK).from(BOOK)
翻译成以下特定方言的表达式
ASE, Access, SQLDataWarehouse, SQLServer, Sybase
SELECT BOOK.ID [BOOK__ID], BOOK.AUTHOR_ID [BOOK__AUTHOR_ID], BOOK.TITLE [BOOK__TITLE], BOOK.PUBLISHED_IN [BOOK__PUBLISHED_IN], BOOK.LANGUAGE_ID [BOOK__LANGUAGE_ID] FROM BOOK
Aurora MySQL, BigQuery, MariaDB, MemSQL, MySQL, SQLite
SELECT BOOK.ID `BOOK__ID`, BOOK.AUTHOR_ID `BOOK__AUTHOR_ID`, BOOK.TITLE `BOOK__TITLE`, BOOK.PUBLISHED_IN `BOOK__PUBLISHED_IN`, BOOK.LANGUAGE_ID `BOOK__LANGUAGE_ID` FROM BOOK
Aurora Postgres, CockroachDB, DuckDB, H2, Informix, Postgres, YugabyteDB
SELECT ROW ( BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE, BOOK.PUBLISHED_IN, BOOK.LANGUAGE_ID ) BOOK FROM BOOK
ClickHouse
SELECT TUPLE ( BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE, BOOK.PUBLISHED_IN, BOOK.LANGUAGE_ID ) BOOK FROM BOOK
Databricks
SELECT ( coalesce(BOOK.ID), coalesce(BOOK.AUTHOR_ID), coalesce(BOOK.TITLE), coalesce(BOOK.PUBLISHED_IN), coalesce(BOOK.LANGUAGE_ID) ) BOOK FROM BOOK
DB2, Derby, Exasol, Firebird, HSQLDB, Hana, Oracle, Redshift, Snowflake, Teradata, Trino, Vertica
SELECT BOOK.ID "BOOK__ID", BOOK.AUTHOR_ID "BOOK__AUTHOR_ID", BOOK.TITLE "BOOK__TITLE", BOOK.PUBLISHED_IN "BOOK__PUBLISHED_IN", BOOK.LANGUAGE_ID "BOOK__LANGUAGE_ID" FROM BOOK
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!