Fügen Sie einen eindeutigen Index für die Tabellenposition hinzu, damit keine doppelten Datensätze eingefügt werden
ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);
Dadurch werden doppelte Datensätze automatisch aus der Tabelle entfernt und für zukünftige Einfügeabfragen müssen Sie INSERT IGNORE verwenden -Klausel, um doppelte Fehler zu vermeiden.
aber wie von @AD7six vorgeschlagen In Kommentaren funktioniert es möglicherweise nicht mit den MySQL-Versionen 5.1.41,5.5.1-m2, 6.0 :Siehe Fehler hier
oder eine alternative sichere Methode zum Entfernen von Duplikaten mit DELETE Abfrage:
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;
um Werte von auto_increment zurückzusetzen Spalte locid , können Sie einfach den primary key löschen auf locid und neu erstellen:
ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
oder alternative Möglichkeit, Werte von locid zurückzusetzen mit UPDATE Abfrage:
SET var_locid = 0;
UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;