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

内联派生表

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

内联派生表是一个表表达式,带有一个WHERE 子句,这两种情况都可以在很多情况下内联到调用查询中。

此功能的主要用例是动态 SQL,您可以在不影响调用站点的情况下向表中添加谓词,并且不会放弃类型安全。

-- In SQL, the derived table is inlined
SELECT
  BOOK.ID,
  BOOK.TITLE
FROM BOOK
WHERE BOOK.TITLE LIKE 'A%'
// This book reference can be supplied dynamically
Book aBooks = BOOK.where(BOOK.TITLE.like("A%"));

create.select(aBooks.ID, aBooks.TITLE)
      .from(aBooks)
      .fetch();

每当上下文需要时,内联派生表都会生成一个显式的派生表,例如,当在LEFT JOIN中使用时

-- In SQL, the derived table created explicitly
SELECT BOOK.ID, BOOK.TITLE
FROM AUTHOR
LEFT JOIN (
  SELECT * FROM BOOK WHERE BOOK.TITLE LIKE 'A%'
) BOOK
ON AUTHOR.ID = BOOK.AUTHOR_ID
// This book reference can be supplied dynamically
Book aBooks = BOOK.where(BOOK.TITLE.like("A%"));

create.select(AUTHOR.ID, aBooks.ID, aBooks.TITLE)
      .from(AUTHOR)
      .leftJoin(aBooks).on(AUTHOR.ID.eq(aBooks.AUTHOR_ID))
      .fetch();

反馈

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

The jOOQ Logo