You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JOOQ查询中同时返回列值总和与行数?

修改后的JOOQ查询代码(同时返回总和与行数)

直接在原查询的select语句中添加行数统计即可,以下是调整后的Kotlin代码:

val (totalAmount, rowCount) = db.select(
    // 保留原有的总和计算,将null结果转为0
    DSL.coalesce(DSL.sum(AMOUNT), 0).cast(Long::class.java),
    // 新增行数统计,无匹配行时自动返回0
    DSL.count().cast(Long::class.java)
)
    .from(this.innerJoin(ACCOUNT).on(ACCOUNT_ID.eq(ACCOUNT.ID)))
    .where(ACCOUNT.ACCOUNT_ID.eq(accId))
    .awaitSingle()
    .let { it.value1() to it.value2() }

关键说明:

  • DSL.count()用于统计符合过滤条件的记录行数,无需额外处理空值——即使没有匹配结果,它也会返回0
  • 原有的sum(AMOUNT)仍需coalesce转换:当无匹配行时sum会返回null,用coalesce将其转为0保证类型一致
  • 通过解构声明val (totalAmount, rowCount)可以直接获取两个结果值,简化后续业务逻辑

内容的提问来源于stack exchange,提问作者saffa_surfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:55:01