Я хочу сделать это SELECT MAX(age), MIN(age) FROM users WHERE name = 'Rick'
. Лучшее, что я придумал, включает 2 запроса: Users.filter(_.name === 'Rick').map(_.age).max
Как выбрать максимум, минимум в том же запросе в slick
Ответы (1)
Это поддерживается, но сначала вам нужно его сгруппировать. Поскольку вы рассматриваете весь набор как группу, сгруппируйте его по true
, и slick проигнорирует его при создании 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
Другой подход, который вы могли бы попробовать, - это союз.
person
Tim Harper
schedule
21.11.2014