Выберите отдельные и самые старые записи ( Примечание: , используя MIN () и предполагая, что id - это режим автоинкремента и PK), просто переключитесь на MAX (), чтобы вместо этого сохранить новейшие.
SELECT MIN(id) FROM cart group by rfid;
Все вместе (удаляя все, что не было в предыдущем, выберите
DELETE FROM cart where id NOT in (SELECT MIN(id) FROM cart group by rfid);
Вышеприведенное не сработает, потому что вы не можете указать целевую таблицу для обновления в предложении FROM (в данном случае DELETE), но вы можете обойти с помощью подвыбора, поэтому окончательный рабочий запрос будет:
DELETE FROM cart WHERE id NOT IN (SELECT MIN(A.id) FROM (SELECT * FROM cart) A group by A.rfid);
Редактировать (удалить все записи с количеством> 1)
DELETE FROM cart WHERE id IN(
SELECT A.id FROM (SELECT * FROM cart) A where A.rfid IN
(SELECT B.rfid from (SELECT * FROM cart) B group by B.rfid having count(B.rfid)>1)
);