小编典典

表中的Slick 2.1.0 Filter Max Version

sql

我正在尝试从表中获取最大版本号。我的表内容是:

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

作为结果返回,这肯定是错误的。我想我需要分组,但是我无法弄清楚如何编写Slick组合器!有什么帮助吗?


阅读 188

收藏
2021-04-22

共1个答案

小编典典

所以我设法解决了这个问题:

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
2021-04-22