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;