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

SELECT * EXCEPT (...)

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

标准 SQL SELECT * 语法的一个有用的扩展是 BigQuery 启发的 * EXCEPT (columns) 语法,它获取投影的所有列,但某些列除外。就像星号本身一样,这主要用于临时查询,但它对于偶尔的 jOOQ 查询也很有用。

// Renders a SELECT * statement - Explicit unqualified asterisk
create.select(asterisk().except(BOOK.ID)).from(BOOK).fetch();

// Renders a SELECT BOOK.* statement - Explicit qualified asterisk
create.select(BOOK.asterisk().except(BOOK.ID))
      .from(BOOK)
      .fetch();

create.select(BOOK.asterisk().except(BOOK.ID), AUTHOR.asterisk().except(AUTHOR.ID))
      .from(BOOK, AUTHOR)
      .fetch();

如果方言本身不支持此语法,则 jOOQ 将根据生成的代码中的元数据知识,显式地为您扩展该语法。

方言支持

此示例使用 jOOQ

select(asterisk().except(LANGUAGE.ID)).from(LANGUAGE)

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

ASE、Access、Aurora MySQL、Aurora Postgres、ClickHouse、CockroachDB、DB2、Derby、DuckDB、Exasol、Firebird、HSQLDB、Hana、Informix、MariaDB、MemSQL、MySQL、Oracle、Postgres、SQLDataWarehouse、SQLServer、SQLite、Sybase、Teradata、Trino、Vertica、YugabyteDB

SELECT LANGUAGE.CD, LANGUAGE.DESCRIPTION
FROM LANGUAGE

BigQuery

SELECT * EXCEPT (ID)
FROM LANGUAGE

Databricks、H2

SELECT * EXCEPT (LANGUAGE.ID)
FROM LANGUAGE

Redshift

SELECT * EXCLUDE (LANGUAGE.ID)
FROM LANGUAGE

Snowflake

SELECT * EXCLUDE (ID)
FROM LANGUAGE
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

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

The jOOQ Logo