【发布时间】:2017-03-03 17:23:49
【问题描述】:
我正在尝试在 Slick 查询中应用 .groupBy
var q = (for {
user <- Users
userSettings <- UserSettings if user.id === userSettings.userId
} yield (user, userSettings)).groupBy {
case (users, userSettings) =>
(user.id, userSettings.controls)
}.map {
case (x, y) => (x._1, y.map(_._2.controls).???)
}
如果controls 列是整数或长整数,我可以应用sum、avg 和其他聚合函数。但在这种情况下,controls 是一个字符串。如何对这些字符串进行分组连接,使记录看起来像
-----------------------------------------
|User ID |User Controls |
-----------------------------------------
|1 |left, right, up, down |
|2 |left, right |
-----------------------------------------
不应用groupBy 记录看起来像这样
-----------------------------------------
|User ID |User Controls |
-----------------------------------------
|1 |left |
|1 |right |
|1 |up |
|1 |down |
|2 |left |
|2 |right |
-----------------------------------------
【问题讨论】:
-
讨论了对后端特定聚合函数的支持的问题:github.com/slick/slick/issues/923 如果您碰巧使用的是 postgres,则有一个 slick 扩展,增加了对这些函数的支持:github.com/tminglei/slick-pg
标签: scala playframework slick