Uw vraag:"Kan ik dit bereiken met een mysql-query met behulp van een unieke index? "
Het antwoord is 100% ja.
Er zijn twee manieren om een index te maken:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Dit werkt echter alleen als uw tabel geen bestaande dubbele gegevens bevat. Anders krijg je een foutmelding zoals deze:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Daarom moet u:
- maak een nieuwe lege tabel die lijkt op uw
targets
tafel. - maak een unieke index.
INSERT IGNORE
gegevens uit de oude tabel.- Hernoem
targets
naartargets_old
entargets_new
naartargets
.
Voorbeeld:
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;