Table 中的 Slick 2.1.0 过滤器最大版本
Slick 2.1.0 Filter Max Version in a Table
我正在尝试从 table 获取最大版本号。我的 table 内容是:
id externalId name version
1 10 n1 1
2 65 n2 2
3 10 n3 2
4 77 n4 1
在上面的 table 中,我们有最大版本为 2 的行,因此我的查询必须 return 我传递给查询的给定 externalId 的最大版本行。
我现在坚持写它的 Slick 版本。有什么建议,指点吗?这是我到目前为止所拥有的:(我传入了 externalId)
for {
myTable1 <- myTable1Elems
if myTable1.version === (
myTable1Elems
.filter(_.externalId === s"$externalId")
.map(_.version)
.max
)
} yield myTable1
这似乎做错了,因为我的测试表明,当我询问 externalId = 77 的最大版本时,它 returns 2 行。我得到了两个
1 10 n1 1
4 77 n4 1
returned 作为结果肯定是错误的。我想我需要 groupBy,但我就是不知道如何编写 Slick 组合器!有帮助吗?
所以我设法解决了这个问题:
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
我正在尝试从 table 获取最大版本号。我的 table 内容是:
id externalId name version
1 10 n1 1
2 65 n2 2
3 10 n3 2
4 77 n4 1
在上面的 table 中,我们有最大版本为 2 的行,因此我的查询必须 return 我传递给查询的给定 externalId 的最大版本行。
我现在坚持写它的 Slick 版本。有什么建议,指点吗?这是我到目前为止所拥有的:(我传入了 externalId)
for {
myTable1 <- myTable1Elems
if myTable1.version === (
myTable1Elems
.filter(_.externalId === s"$externalId")
.map(_.version)
.max
)
} yield myTable1
这似乎做错了,因为我的测试表明,当我询问 externalId = 77 的最大版本时,它 returns 2 行。我得到了两个
1 10 n1 1
4 77 n4 1
returned 作为结果肯定是错误的。我想我需要 groupBy,但我就是不知道如何编写 Slick 组合器!有帮助吗?
所以我设法解决了这个问题:
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