Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie sortiere ich die Reihenfolge von LEFT JOIN in einer SQL-Abfrage?

Versuchen Sie es mit MAX mit einem 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;

Weitere Informationen zu GROUP BY

Die Gruppieren-nach-Klausel wird verwendet, um die ausgewählten Datensätze basierend auf eindeutigen Kombinationen der Gruppieren-nach-Spalten in Gruppen aufzuteilen. Dies ermöglicht uns dann, Aggregatfunktionen (z. B. MAX, MIN, SUM, AVG, ...) zu verwenden, die der Reihe nach auf jede Gruppe von Datensätzen angewendet werden. Die Datenbank gibt für jede Gruppierung einen einzelnen Ergebnisdatensatz zurück.

Zum Beispiel, wenn wir eine Reihe von Aufzeichnungen haben, die Temperaturen über Zeit und Ort in einer Tabelle wie dieser darstellen:

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
...

Wenn wir dann die maximale Temperatur nach Ort finden möchten, müssen wir die Temperaturaufzeichnungen in Gruppierungen aufteilen, wobei jeder Datensatz in einer bestimmten Gruppe denselben Ort hat. Wir wollen dann die maximale Temperatur jeder Gruppe finden. Die Abfrage dazu lautet wie folgt:

SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;