mysql - 用于 sql 的 Groovy groupby 或映射

标签 mysql grails groovy

我写了下面的查询

def result=GuruActivity.executeQuery("select P.id, P.postBy, P.totalUp from GuruActivity as P where P.totalUp>5")
println result
render "done"

我得到的结果是这样的

[1, AAA, 7], [2, AAA, 10], [3, AAA, 7], [7, BBB, 7], [9, CCC, 7]

现在如何以下列格式(在 map 中)获取 P.ID,我在这里获取超过 5 totalUp 的 id

AAA : [1,2,3]
BBB : [7]
CCC : [9]

我该怎么做?

最佳答案

一种方法是使用集合的 groupBy

def list = [[1, 'AAA', 7], [2, 'AAA', 10], 
           [3, 'AAA', 7], [7, 'BBB', 7], [9, 'CCC', 7]]

assert list.groupBy{it[1]}
           .collectEntries{k, v-> [k, v.collect{it[0]}]} == 
                          ['AAA':[1, 2, 3], 'BBB':[7], 'CCC':[9]]​​​​​​

关于mysql - 用于 sql 的 Groovy groupby 或映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016770/

相关文章:

hibernate - 在Gorm条件中:按属性过滤域内的集合

javascript - Grails 2.0 : Use Service in javascript function in GSP

grails - 为连接到另一个域的复合主键的外键创建 Grails 域映射

git - 如何在 Jenkins Workflow 插件中使用 SSH key

Mysql -- 最近 30 天

mysql - 字段 'foreign key' 没有默认值

mysql - 选择一个选择的结果

html - 将对象属性扩展为标记属性

java - Groovy/Java 正则表达式循环匹配模式

Mysql单列表-->插入其他表