Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Löschen Sie Zeilen, um maximal x Zeilen pro Gruppe in der Oracle-Tabelle zu haben

Angenommen die Kombination (person_id, car_id) in der Tabelle eindeutig ist, können Sie etwa so vorgehen:

delete from car_assignment 
where (person_id, car_id) 
        in (select person_id, car_id
            from (
              select person_id, 
                     car_id, 
                     row_number() over (partition by person_id order by car_id) as rn
              from car_assignment
            ) t 
            where rn > 2);