标量子查询
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
标量子查询是生成标量值(即一行一列)的子查询。这些值可以用作普通的列表达式。从语法上讲,任何 Select<Record1<?>>
类型都有资格作为标量子查询,而不管其内容以及它是否是“相关的”。
在 jOOQ 中,主要有 3 种创建标量子查询的方法
- 使用
DSL.field(Select)
进行类型安全包装 - 使用
Select.asField()
进行类型不安全包装 - 通过便捷方法,例如
Field.eq(Select)
例如
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();
在上面的示例中,子查询计算来自外部查询的每个作者的书籍数量。
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的意见!