Voglio fare questo SELECT MAX(age), MIN(age) FROM users WHERE name = 'Rick'
. Il meglio che ho trovato riguarda 2 query: Users.filter(_.name === 'Rick').map(_.age).max
Come selezionare max, min nella stessa query in slick
5
A
risposta
3
Questo è supportato, ma prima è necessario raggrupparlo. Dal momento che si sta trattando l'intero set di come un gruppo, gruppo che da true
e chiazza di petrolio ignorerà quando genera l'SQL:
val q = Users.filter(_.name === 'Rick').groupBy { _ => true }.map {
case (_, group) =>
(group.map(_.age).max, group.map(_.age).min)
}
Si dovrebbe produrre qualcosa di simile:
q.selectStatement
# => select max(x2."age"), min(x2."age") from "Users" x2
Un altro approccio potresti provare sarebbe un'unione.