Votre question :"Puis-je y parvenir avec une requête mysql utilisant un index unique ? "
La réponse est oui à 100 %.
Il existe deux façons de créer un index :
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Cependant, cela ne fonctionnera que si votre table ne contient pas de données en double existantes. Sinon, vous recevrez un message d'erreur comme celui-ci :
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Par conséquent, vous devez :
- créez une nouvelle table vide similaire à vos
targets
tableau. - créer un index unique.
INSERT IGNORE
données de l'ancienne table.- Renommer les
targets
àtargets_old
ettargets_new
auxtargets
.
Exemple :
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;