La tua domanda:"Posso ottenere questo risultato con una query mysql utilizzando un indice univoco? "
La risposta è sì al 100%.
Esistono due modi per creare un indice:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Tuttavia, questo funzionerà solo se la tabella non ha dati duplicati esistenti. Altrimenti riceverai un messaggio di errore come questo:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Pertanto, è necessario:
- crea una nuova tabella vuota simile ai tuoi
targets
tabella. - crea un indice univoco.
INSERT IGNORE
dati dalla vecchia tabella.- Rinomina
targets
atargets_old
etargets_new
atargets
.
Esempio:
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;