sql >> Base de Datos >  >> RDS >> Mysql

mysql:agrupar por ID, obtener la máxima prioridad por cada ID

Si bien esta puede ser la respuesta 'aceptada', el rendimiento de Solución de Mark es en circunstancias normales muchas veces mejor, e igualmente válido para la pregunta, así que, por todos los medios, ¡busque su solución en producción!

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

Asumiendo que 'id' es una columna que no acepta valores NULL.

[editar]:error mío, necesito una segunda unión, no puedo hacerlo solo con una.