我的数据库结构如下所示:
id |含量
我将使用最大ID(不仅仅是id)获取条目。
我阅读了答案How to make aggregations with slick,但我发现声明中没有first
方法:Query(Coffees.map(_.price).max).first
。现在该怎么做?
如果我需要最高content
项目的id
怎么办?
答案 0 :(得分:0)
要检索其他列,您可以执行以下操作。下面的示例计算一列的max
,找到具有该最大值的行,并返回该行中另一列的值:
val coffees = TableQuery[Coffees]
val mostExpensiveCoffeeQuery =
for {
maxPrice <- coffees.map(_.price).max.result
c <- maxPrice match {
case Some(p) => coffees.filter(_.price === p).result
case None => DBIO.successful(Seq())
}
} yield c.headOption.map(_.name)
val mostExpensiveCoffee = db.run(mostExpensiveCoffeeQuery)
// Future[Option[String]]
或者,要返回完整的Coffees
对象:
val mostExpensiveCoffeeQuery =
for {
...
} yield c.headOption
val mostExpensiveCoffee = db.run(mostExpensiveCoffeeQuery)
// Future[Option[Coffees]]