Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql:agrupar por ID, obter a maior prioridade por cada ID


Embora esta possa ser a resposta 'aceita', o desempenho de Solução de Mark é em circunstâncias normais muitas vezes melhor e igualmente válido para a questão, então, por todos os meios, vá para a solução dele em produção!
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

Assumindo que 'id' é uma coluna não anulável.

[editar]:meu mal, preciso de uma segunda junção, não posso fazer isso com apenas uma.