Twoje pytanie:„Czy mogę to osiągnąć za pomocą zapytania mysql używającego unikalnego indeksu? "
Odpowiedź brzmi w 100% tak.
Istnieją dwa sposoby tworzenia indeksu:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Jednak będzie to działać tylko wtedy, gdy Twoja tabela nie zawiera zduplikowanych danych. W przeciwnym razie otrzymasz następujący komunikat o błędzie:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Dlatego musisz:
- utwórz nową pustą tabelę podobną do Twoich
targets
stół. - utwórz unikalny indeks.
INSERT IGNORE
dane ze starej tabeli.- Zmień nazwę
targets
dotargets_old
itargets_new
dotargets
.
Przykład:
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;