Lägg till unikt index på tabellplatsen så att inga dubbletter av poster kommer att infogas
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
Detta tar automatiskt bort dubblettposter från tabellen och för framtida infogningsfrågor måste du använda INSERT IGNORE
klausul för att undvika att få dubbletter av fel.
men som föreslagits av @AD7six
i kommentarerna kanske det inte fungerar på MySQL-versioner 5.1.41,5.5.1-m2, 6.0
:se felet här
eller alternativt säkert sätt att ta bort dubbletter med DELETE
fråga:
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;
för att återställa värden för auto_increment
kolumn locid
, du kan bara släppa primary key
på locid
och återskapa det:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
eller alternativt sätt att återställa värden för locid
med UPDATE
fråga:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;