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
列的名称。
反馈
您对此页面有任何反馈吗?我们很乐意听取您的意见!