Добавете уникален индекс към местоположението на таблицата, така че да не се вмъкват дублиращи се записи
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;