Tilføj unikt indeks på tabelplacering, så der ikke indsættes duplikerede poster
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
Dette vil automatisk fjerne duplikerede poster fra tabellen, og for fremtidige indsættelsesforespørgsler skal du bruge INSERT IGNORE klausul for at undgå at få duplikerede fejl.
men som foreslået af @AD7six i kommentarer virker det muligvis ikke på MySQL-versioner 5.1.41,5.5.1-m2, 6.0 :se fejl her
eller alternativ sikker måde at fjerne dubletter ved hjælp af DELETE forespørgsel:
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;
for at genindsætte værdier for auto_increment kolonne locid , kan du bare slippe den primary key på locid og genskab det:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
eller alternativ måde at genindsætte værdier for locid ved hjælp af UPDATE forespørgsel:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;