У меня есть таблица
id:name:passportnumber:score 1:xxx:123456:99 2:yyy:789012:88 3:xxx:123456:11 4:xxx:123456:44 5:xxx:123456:66 6:xxx:123456:77
Я хочу удалить дублированные старые строки и сохранить только последний номер, который имеет тот же номер паспорта
id:name:passportnumber:score 2:yyy:789012:88 6:xxx:123456:77
Каков наилучший способ без временной таблицы
благодаря
Вы должны иметь возможность самостоятельно присоединяться к своей таблице и выполнять удаление:
delete t1 from yt t1 inner join yt t2 on t1.passportnumber = t2.passportnumber where t1.id < t2.id;
См. SQL Fiddle with Demo
LEFT JOIN
на вашем DELETE
может это сделать;
DELETE Table1 FROM Table1 LEFT JOIN Table1 b ON Table1.id<b.id AND Table1.passportnumber=b.passportnumber WHERE b.id IS NOT NULL;
SQLfiddle для тестирования .