Tente usar
MAX
com um 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;
Mais informações sobre GROUP BY
A cláusula group by é usada para dividir os registros selecionados em grupos com base em combinações exclusivas do grupo por colunas. Isso nos permite usar funções agregadas (por exemplo, MAX, MIN, SUM, AVG, ...) que serão aplicadas a cada grupo de registros por vez. O banco de dados retornará um único registro de resultado para cada agrupamento.
Por exemplo, se tivermos um conjunto de registros representando temperaturas ao longo do tempo e localização em uma tabela como esta:
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
...
Então, se quisermos encontrar a temperatura máxima por local, precisamos dividir os registros de temperatura em agrupamentos, onde cada registro em um determinado grupo tem o mesmo local. Queremos então encontrar a temperatura máxima de cada grupo. A consulta para fazer isso seria a seguinte:
SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;