Câu hỏi của bạn:" Tôi có thể đạt được điều này với truy vấn mysql sử dụng chỉ mục duy nhất không? "
Câu trả lời là 100% có.
Có hai cách tạo chỉ mục:
1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
2. ALTER TABLE table_name
ADD UNIQUE index_name (column1, column2, ...);
Tuy nhiên, điều này sẽ chỉ hoạt động nếu bảng của bạn không có dữ liệu trùng lặp hiện có. Nếu không, bạn sẽ nhận được thông báo lỗi như sau:
Query: CREATE UNIQUE INDEX index_name ON targets (a, b)
Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'
Do đó, bạn cần:
- tạo một bảng trống mới tương tự như
targets
của bạn bảng. - tạo chỉ mục duy nhất.
-
INSERT IGNORE
dữ liệu từ bảng cũ. - Đổi tên
targets
thànhtargets_old
vàtargets_new
tớitargets
.
Ví dụ:
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;