【发布时间】:2015-05-29 23:32:00
【问题描述】:
对于如下表结构:
id externalId name version
1 10 n1 1
2 65 n2 2
3 10 n3 2
4 77 n4 1
我正在尝试获取具有按 externalId 分组的最大版本的所有条目(所有列)。预期的结果应该是:
id externalId name version
2 65 n2 2
3 10 n3 2
4 77 n4 1
为此,我定义了以下精巧查询:
val resulting = myTableEntries
.groupBy(x => x.externalID)
.map {
case (id, group) =>
(id, group.map(_.version).max)
}
我怎样才能得到所有的列,而不仅仅是 id 和版本?
实际上我需要的是以下 SQL 的 Slick 版本:
select myTable.id, myTable.name, myTable.externalId, myTable.version
from MyTable myTable
where version =
(select max(revision) from MyTable myTable1 where myTable.id=myTable1.id)
【问题讨论】:
-
这不是在 SQL 中使用
group by和having完成的吗? -
是的,我想在 Slick 中这样做!