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

时间:2014-11-20 21:12:13

标签: scala slick slick-2.0

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

1 个答案:

答案 0 :(得分:6)

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

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

它会让你产生这样的东西:

q.selectStatement
# => select max(x2."age"), min(x2."age") from "Users" x2

你可能尝试的另一种方法是结合。