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

USING子句

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

在复杂的连接树中,两个表之间的列名并不总是唯一的,因此 USING 子句可能会很快产生歧义。即使对于过去可以正常工作的查询,也可能发生这种情况,但由于向表中添加了新列,将停止工作。请谨慎使用此子句!

INNER JOIN, OUTER JOIN, SEMI JOIN, ANTI JOIN 都需要连接谓词。

提供此连接谓词的一种方法是 USING 子句,它允许指定一组两个表共有的列名,基于这些列名形成连接谓词。假设我们将 AUTHOR.ID 列称为 AUTHOR.AUTHOR_ID 代替

SELECT *
FROM AUTHOR
JOIN BOOK USING (AUTHOR_ID)
 
create.select()
      .from(AUTHOR)
      .join(BOOK).using(AUTHOR.AUTHOR_ID)
      .fetch();

在更复杂的连接树中也存在一定的歧义风险,但在简单情况下,如果您相应地设计您的模式,这可能是一种非常方便的连接表的方式。Sakila 示例数据库就是一个很好的例子,其中所有 FOREIGN KEY 列共享引用的 PRIMARY KEY 列的名称。

反馈

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

The jOOQ Logo