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

列的对象限定

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

默认情况下,jOOQ 会使用表名完全限定所有列(表本身也可能被限定)。这是一个合理的默认设置,因为任何 JOIN 操作 都可能产生歧义的列名,例如常见的名称 IDCREATED_AT

-- Columns always qualified with table name.
SELECT table.column
FROM table
DSL.using(configuration)
   .select(TABLE.COLUMN)
   .from(TABLE);

在极少数情况下,可能需要取消此限定,仅保留以下情况:

  • ALWAYS:这是默认设置。列始终使用其表进行限定。
  • WHEN_MULTIPLE_TABLES:当 FROM 子句 包含多个表时。
  • WHEN_AMBIGUOUS_COLUMNS:当 FROM 子句 产生歧义列时。
  • NEVER:始终取消限定。这可能会产生语义错误的 SQL,仅用于逐个查询的基础上,如果以上任何一项都不能按需实现要求。

示例配置

new Settings()
  .withRenderTable(RenderTable.WHEN_MULTIPLE_TABLES) // Defaults to ALWAYS

反馈

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

The jOOQ Logo