JOIN运算符
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
jOOQ 支持许多不同类型的标准和非标准 SQL JOIN 操作。所有这些 JOIN 方法都可以在 org.jooq.Table
类型上调用(更多信息请参阅 连接表部分),或者为了方便起见,直接在 FROM 子句之后调用。以下示例连接了 AUTHOR 和 BOOK
DSLContext create = DSL.using(connection, dialect); // Call "join" directly on the AUTHOR table Result<?> result = create.select() .from(AUTHOR.join(BOOK) .on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))) .fetch(); // Call "join" on the type returned by "from" Result<?> result = create.select() .from(AUTHOR) .join(BOOK) .on(BOOK.AUTHOR_ID.eq(AUTHOR.ID)) .fetch();
两种语法将产生相同的 SQL 语句。但是,在 org.jooq.Table
对象上调用 "join" 允许更强大的嵌套 JOIN 表达式(如果您可以处理括号)
SELECT * FROM AUTHOR LEFT OUTER JOIN ( BOOK JOIN BOOK_TO_BOOK_STORE ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID ) ON BOOK.AUTHOR_ID = AUTHOR.ID
// Nest joins and provide JOIN conditions only at the end create.select() .from(AUTHOR .leftOuterJoin(BOOK .join(BOOK_TO_BOOK_STORE) .on(BOOK_TO_BOOK_STORE.BOOK_ID.eq(BOOK.ID))) .on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))) .fetch();
- 请参阅关于 条件表达式 的部分,了解更多关于在 jOOQ 中创建
org.jooq.Condition
对象的多种方法。 - 请参阅关于 表表达式 的部分,了解关于在 jOOQ 中引用
org.jooq.Table
对象的各种方法。
有关不同连接类型的更多信息,请参阅连接表部分。
反馈
您对此页面有任何反馈吗?我们很乐意听取您的意见!