Přidejte jedinečný index na umístění tabulky, aby se nevložily žádné duplicitní záznamy
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
Tím se automaticky odstraní duplicitní záznamy z tabulky a pro budoucí dotazy na vkládání musíte použít INSERT IGNORE
klauzule, abyste se vyhnuli duplicitním chybám.
ale jak navrhuje @AD7six
v komentářích nemusí fungovat na verzích MySQL 5.1.41,5.5.1-m2, 6.0
:viz chybu zde
nebo alternativní bezpečný způsob odstranění duplikátů pomocí DELETE
dotaz:
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;
znovu nastavit hodnoty auto_increment
sloupec locid
, stačí vypustit primary key
na locid
a znovu jej vytvořte:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
nebo alternativní způsob, jak znovu usadit hodnoty locid
pomocí UPDATE
dotaz:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;