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

标量子查询

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

标量子查询是生成标量值(即一行一列)的子查询。这些值可以用作普通的列表达式。从语法上讲,任何 Select<Record1<?>> 类型都有资格作为标量子查询,而不管其内容以及它是否是“相关的”。

在 jOOQ 中,主要有 3 种创建标量子查询的方法

例如

SELECT
  AUTHOR.ID, (
    SELECT count(*) FROM AUTHOR
  ) AS authors
FROM AUTHOR
create.select(
          AUTHOR.ID,
          field(selectCount().from(AUTHOR)).as("authors"))
      .from(AUTHOR)
      .fetch();

相关子查询

“相关”子查询是一种子查询(标量或非标量),其执行依赖于嵌入它的查询。它充当一个函数,将当前行作为输入参数。

SELECT
  AUTHOR.ID, (
    SELECT count(*)
    FROM BOOK
    WHERE BOOK.AUTHOR_ID = AUTHOR.ID
  ) AS books
FROM AUTHOR
create.select(
          AUTHOR.ID,
          field(selectCount()
            .from(BOOK)
            .where(BOOK.AUTHOR_ID.eq(AUTHOR.ID)))
      .from(AUTHOR)
      .fetch();

在上面的示例中,子查询计算来自外部查询的每个作者的书籍数量。

反馈

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

The jOOQ Logo