Intenta usar 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;
Más información sobre GROUP BY
La cláusula group by se usa para dividir los registros seleccionados en grupos basados en combinaciones únicas de las columnas group by. Esto nos permite usar funciones agregadas (por ejemplo, MAX, MIN, SUM, AVG, ...) que se aplicarán a cada grupo de registros por turno. La base de datos devolverá un único registro de resultados para cada agrupación.
Por ejemplo, si tenemos un conjunto de registros que representan temperaturas a lo largo del tiempo y la ubicación en una tabla 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
...
Luego, si queremos encontrar la temperatura máxima por ubicación, debemos dividir los registros de temperatura en grupos, donde cada registro en un grupo en particular tiene la misma ubicación. Entonces queremos encontrar la temperatura máxima de cada grupo. La consulta para hacer esto sería la siguiente:
SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;