Prova a utilizzare MAX
con un GROUP BY
.
SELECT u.userName, MAX(c.carPrice)
FROM users u
LEFT JOIN cars c ON u.id = c.belongsToUser
WHERE u.id = 4;
GROUP BY u.userName;
Ulteriori informazioni su GROUP BY
La clausola group by viene utilizzata per suddividere i record selezionati in gruppi in base a combinazioni univoche delle colonne group by. Questo ci consente quindi di utilizzare funzioni aggregate (es. MAX, MIN, SUM, AVG, ...) che verranno applicate a turno a ciascun gruppo di record. Il database restituirà un unico record di risultati per ogni raggruppamento.
Ad esempio, se abbiamo una serie di record che rappresentano le temperature nel tempo e la posizione in una tabella come questa:
Location Time Temperature
-------- ---- -----------
London 12:00 10.0
Bristol 12:00 12.0
Glasgow 12:00 5.0
London 13:00 14.0
Bristol 13:00 13.0
Glasgow 13:00 7.0
...
Quindi, se vogliamo trovare la temperatura massima per posizione, dobbiamo dividere i record di temperatura in raggruppamenti, in cui ogni record in un particolare gruppo ha la stessa posizione. Vogliamo quindi trovare la temperatura massima di ciascun gruppo. La query per farlo sarebbe la seguente:
SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;