Mysql
 sql >> Database >  >> RDS >> Mysql

mysql:raggruppa per ID, ottieni la massima priorità per ogni ID

Sebbene questa possa essere la risposta "accettata", le prestazioni di Soluzione di Mark in circostanze normali è molte volte migliore e ugualmente valido per la domanda, quindi cerca con tutti i mezzi la sua soluzione in produzione!

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

Supponendo che 'id' sia una colonna non annullabile.

[modifica]:mio cattivo, ho bisogno di un secondo join, non posso farlo con uno solo.