可用版本:Dev (3.21) | 最新 (3.20) | 3.19

可选的表

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

创建 动态 SQL 查询 的一个关键能力是能够提供可选的 表表达式

boolean condition = ...

create.select(BOOK.ID)
      .from(BOOK)
      .join(condition ? AUTHOR : noTable()).on(BOOK.AUTHOR_ID.eq(AUTHOR_ID))
      .fetch();

上述查询产生

-- If condition is true
SELECT book.id FROM book JOIN author ON book.author_id = author.id

-- If condition is false
SELECT book.id FROM book

noTable() 表达式将被忽略。如果这意味着 FROM 子句为空,则整个子句将被省略。根据 JOIN 类型,语法上可能仍然需要 ON 子句。但是,如果提供了 noTable(),则 ON 子句不起作用,将被忽略。

noTable() 表达式仅在 DSL API 中支持,而不支持在 模型 API 中支持,其中 noTable() 的行为未定义。

反馈

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

The jOOQ Logo