sql >> Databasteknik >  >> RDS >> Mysql

mysql:gruppera efter ID, få högsta prioritet per varje ID

Även om detta kan vara det "godkända" svaret, prestanda för Marks lösning är under normala omständigheter många gånger bättre, och lika giltig för frågan, så för all del, gå för hans lösning i produktionen!

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

Förutsatt att 'id' är en icke-nullbar kolumn.

[redigera]:min dåliga, behöver andra join, kan inte göra det med bara en.



  1. Räkna Antal konsekutiv förekomst av värden i tabell

  2. UNIK begränsning, endast när ett fält innehåller ett specifikt värde

  3. MySQL - skapa en användardefinierad funktion för en anpassad sortering

  4. MySQL - Grupp och totalt, men returnerar alla rader i varje grupp