JOOQ:如何获取按字段分组的记录?

Posted

技术标签:

【中文标题】JOOQ:如何获取按字段分组的记录?【英文标题】:JOOQ: how to fetch records grouped by field? 【发布时间】:2021-12-10 23:35:44 【问题描述】:

我需要使用 JOOQ 获取地图 Map<String, List<Message>>。我写在 Kotlin 上。我需要按用户名对消息进行分组。我的代码开始于:

fun getAllForUsernames(usernames: List<String>): Map<String, List<Message>> =
        dsl.selectFrom(Messages.MESSAGES)
            .where(Messages.MESSAGES.USERNAME.`in`(usernames))
            // ??? returns Map<String, List<Message>>

请建议如何完成功能。

【问题讨论】:

【参考方案1】:

您可以使用开箱即用的映射功能之一,即ResultQuery.fetchGroups(Field, Class)

dsl.selectFrom(MESSAGES)
   .where(MESSAGES.USERNAME.`in`(usernames))
   .fetchGroups(MESSAGES.USERNAME, Message::class.java)

【讨论】:

以上是关于JOOQ:如何获取按字段分组的记录?的主要内容,如果未能解决你的问题,请参考以下文章

Django ORM如何获取按字段分组的原始值

如何在 Oracle SQL 上进行查询以获取时间间隔,按特定字段分组

Oracle:如何在获取结果之前按某些列对记录进行分组

按多个字段分组并使用 Dart 和 Flutter 获取最大值

如何按列对pyspark中的数据框进行分组并以该列作为键并以记录列表作为其值来获取字典?

thinkphp 如何得到一个按字段内容分组的array