Su pregunta:"¿Puedo lograr esto con una consulta mysql usando un índice único? "
La respuesta es 100 % sí.
Hay dos formas de crear un índice:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Sin embargo, esto solo funcionará si su tabla no tiene datos duplicados existentes. De lo contrario, recibirá un mensaje de error como este:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Por lo tanto, necesita:
- cree una nueva tabla vacía similar a sus
targets
mesa. - crear índice único.
INSERT IGNORE
datos de la tabla anterior.- Renombrar
targets
atargets_old
ytargets_new
atargets
.
Ejemplo:
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;