Вашият въпрос:"Мога ли да постигна това с mysql заявка, използвайки уникален индекс? "
Отговорът е 100% да.
Има два начина за създаване на индекс:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Това обаче ще работи само ако таблицата ви няма съществуващи дублиращи се данни. В противен случай ще получите съобщение за грешка като това:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Следователно, трябва да:
- създайте нова празна таблица, подобна на вашите
targets
маса. - създайте уникален индекс.
INSERT IGNORE
данни от старата таблица.- Преименувайте
targets
къмtargets_old
иtargets_new
къмtargets
.
Пример:
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;