我写了以下查询

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]

现在如何获取以下格式的P.ID(在 map 中),这里我获得的ID超过5 totalUp
AAA : [1,2,3]
BBB : [7]
CCC : [9]

我该怎么做呢?

最佳答案

一种方法是使用collection的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 - Groovy groupby或映射SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20016770/

10-13 05:19