Din fråga:"Kan jag uppnå detta med en mysql-fråga med ett unikt index? "
Svaret är 100 % ja.
Det finns två sätt att skapa index:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Detta kommer dock bara att fungera om din tabell inte har befintliga dubbletter av data. Annars får du ett felmeddelande så här:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Därför måste du:
- skapa en ny tom tabell som liknar dina
targets
tabell. - skapa ett unikt index.
INSERT IGNORE
data från den gamla tabellen.- Byt namn på
targets
tilltargets_old
ochtargets_new
tilltargets
.
Exempel:
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;