如何在光滑的同一查询中选择max,min

pat*_*rit 9 scala slick slick-2.0

我想这样做SELECT MAX(age), MIN(age) FROM users WHERE name = 'Rick'.我提出的最好的涉及2个查询:Users.filter(_.name === 'Rick').map(_.age).max

Tim*_*per 6

这是受支持的,但首先,您需要对其进行分组.由于您将整个集合视为一个组,因此true将其分组并且在生成SQL时将忽略它:

val q = Users.filter(_.name === 'Rick').groupBy { _ => true }.map {
  case (_, group) =>
    (group.map(_.age).max, group.map(_.age).min)
}
Run Code Online (Sandbox Code Playgroud)

它会产生这样的东西:

q.selectStatement
# => select max(x2."age"), min(x2."age") from "Users" x2
Run Code Online (Sandbox Code Playgroud)

您可能尝试的另一种方法是联盟.