Spróbuj użyć MAX
z 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;
Dalsze informacje o GROUP BY
Klauzula group by służy do dzielenia wybranych rekordów na grupy na podstawie unikalnych kombinacji grupy według kolumn. To pozwala nam na użycie funkcji agregujących (np. MAX, MIN, SUM, AVG, ...), które zostaną zastosowane kolejno do każdej grupy rekordów. Baza danych zwróci pojedynczy rekord wyników dla każdej grupy.
Na przykład, jeśli mamy zestaw rekordów reprezentujących temperatury w czasie i położenie w takiej tabeli:
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
...
Następnie, jeśli chcemy znaleźć maksymalną temperaturę według lokalizacji, musimy podzielić rekordy temperatury na grupy, w których każdy rekord w określonej grupie ma tę samą lokalizację. Następnie chcemy znaleźć maksymalną temperaturę każdej grupy. Zapytanie, aby to zrobić, wyglądałoby następująco:
SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;