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

mysql :grouper par ID, obtenir la priorité la plus élevée pour chaque ID

Bien que cela puisse être la réponse "acceptée", les performances de Solution de Marc est dans des circonstances normales plusieurs fois mieux, et tout aussi valable pour la question, donc par tous les moyens, optez pour sa solution en production !

SELECT a.id, a.vehicle_id, a.filename, a.priority
FROM pics a
LEFT JOIN pics b               -- JOIN for priority
ON b.vehicle_id = a.vehicle_id 
AND b.priority > a.priority
LEFT JOIN pics c               -- JOIN for priority ties
ON c.vehicle_id = a.vehicle_id 
AND c.priority = a.priority 
AND c.id < a.id
WHERE b.id IS NULL AND c.id IS NULL

En supposant que 'id' est une colonne non nullable.

[edit] :mon mauvais, j'ai besoin d'une deuxième jointure, je ne peux pas le faire avec une seule.