我正在尝试从表中获取最大版本号。我的表格内容是:
id externalId name version
1 10 n1 1
2 65 n2 2
3 10 n3 2
4 77 n4 1
在上表中,我们的行的最大版本为2,因此我的查询必须返回我传递给查询的给定externalId的最大版本行。
我现在很难写出它的Slick版本。有什么建议,指点?这是我到目前为止:(我传入externalId)
for {
myTable1 <- myTable1Elems
if myTable1.version === (
myTable1Elems
.filter(_.externalId === s"$externalId")
.map(_.version)
.max
)
} yield myTable1
这似乎做错了,因为我的测试显示当我询问externalId = 77的最大版本时它返回2行。我得到了两个
1 10 n1 1
4 77 n4 1
返回结果肯定是错误的。我想我需要groupBy,但我无法弄清楚如何编写Slick组合器!有什么帮助吗?
答案 0 :(得分:0)
所以我设法解决了这个问题:
private def configMaxVersionFilter(extId: String) = for {
tbl <- myTable1Elems
if tbl.externalId === s"$extId" && tbl.version === (
myTable1Elems
.filter(_.externalId === s"$extId")
.map(_.version)
.max
)
} yield tbl