Добавете уникален индекс към местоположението на таблицата, така че да не се вмъкват дублиращи се записи
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
Това автоматично ще премахне дублиращи се записи от таблицата и за бъдещи заявки за вмъкване трябва да използвате INSERT IGNORE клауза, за да избегнете дублиращи се грешки.
но както е предложено от @AD7six в коментари може да не работи на MySQL версии 5.1.41,5.5.1-m2, 6.0 :вижте грешка тук
или алтернативен безопасен начин за премахване на дубликати с помощта на DELETE заявка:
DELETE a
FROM location a
LEFT JOIN (
SELECT locid
FROM location
GROUP BY country, city
)b
ON a.locid = b.locid
WHERE b.locid IS NULL;
за повторно установяване на стойности на auto_increment колона locid , можете просто да пуснете primary key на locid и го създайте отново:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
или алтернативен начин за повторно установяване на стойности на locid с помощта на UPDATE заявка:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;