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

mysql:nach ID gruppieren, höchste Priorität für jede ID erhalten

Dies mag zwar die „akzeptierte“ Antwort sein, aber die Leistung von Marks Lösung ist unter normalen Umständen um ein Vielfaches besser und für die Frage genauso gültig, also auf jeden Fall seine Lösung in der Produktion wählen!

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

Angenommen, „id“ ist eine Spalte, die keine Nullwerte zulässt.

[Bearbeiten]:Mein Fehler, brauche einen zweiten Join, kann es nicht mit nur einem machen.