Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment trier l'ordre de LEFT JOIN dans la requête SQL ?

Essayez d'utiliser MAX avec 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;

Plus d'informations sur GROUP BY

La clause group by est utilisée pour diviser les enregistrements sélectionnés en groupes en fonction de combinaisons uniques des colonnes group by. Cela nous permet ensuite d'utiliser des fonctions d'agrégation (ex. MAX, MIN, SUM, AVG, ...) qui seront appliquées tour à tour à chaque groupe d'enregistrements. La base de données renverra un seul enregistrement de résultat pour chaque regroupement.

Par exemple, si nous avons un ensemble d'enregistrements représentant les températures au fil du temps et de l'emplacement dans un tableau comme celui-ci :

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

Ensuite, si nous voulons trouver la température maximale par emplacement, nous devons diviser les enregistrements de température en groupes, où chaque enregistrement d'un groupe particulier a le même emplacement. On veut ensuite trouver la température maximale de chaque groupe. La requête pour ce faire serait la suivante :

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