Mysql
 sql >> Database >  >> RDS >> Mysql

come ordinare l'ordine di LEFT JOIN nella query SQL?

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;