Dit spørgsmål:"Kan jeg opnå dette med en mysql-forespørgsel ved hjælp af unikt indeks? "
Svaret er 100 % ja.
Der er to måder at oprette indeks på:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Dette vil dog kun fungere, hvis din tabel ikke har eksisterende duplikerede data. Ellers vil du modtage en fejlmeddelelse som denne:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Derfor skal du:
- opret en ny tom tabel svarende til dine
targets
tabel. - opret unikt indeks.
INSERT IGNORE
data fra den gamle tabel.- Omdøb
targets
tiltargets_old
ogtargets_new
tiltargets
.
Eksempel:
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;