Ihre Frage:"Kann ich dies mit einer MySQL-Abfrage mit eindeutigem Index erreichen? "
Antwort ist 100 % ja.
Es gibt zwei Möglichkeiten, einen Index zu erstellen:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Dies funktioniert jedoch nur, wenn Ihre Tabelle keine vorhandenen doppelten Daten enthält. Andernfalls erhalten Sie eine Fehlermeldung wie diese:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Daher müssen Sie:
- Erstellen Sie eine neue leere Tabelle ähnlich Ihren
targets
Tabelle. - eindeutigen Index erstellen.
INSERT IGNORE
Daten aus der alten Tabelle.targets
umbenennen zutargets_old
undtargets_new
zutargets
.
Beispiel:
CREATE TABLE targets_new LIKE targets;
CREATE UNIQUE INDEX index_name
ON targets_new (a, b);
INSERT IGNORE INTO targets_new SELECT * FROM targets;
RENAME TABLE targets TO targets_old;
RENAME TABLE targets_new TO targets;