
MySQL xóa records trùng lặp trước khi tạo index unique
BBMCode đã đăng vào lúc 11:07:03 23/07/2024 | đọc khoảng 2 phút, có 261 từ
Trên thực tế, đôi khi chúng ta sẽ gặp yêu cầu như có một table đã tồn tại trong thời gian dài nhưng lại cần chỉnh sửa một/nhiều column nào đó thành duy nhất (index unique). Dữ liệu thì có nhiều records trùng nhau. Vậy việc cần thiết phải làm là gì?
- Trước hết sẽ phải chấp nhận xóa đi các dòng dữ liệu trùng lặp (duplicated records)
- Sau đó sẽ alter table và add index unique vào columns.
Ví dụ cụ thể như bên dưới
DELETE FROM `site_countries` WHERE `site_country_id` IN (
SELECT * FROM (
SELECT site_country_id
FROM `site_countries`
GROUP BY `site_id` , `country_id`
HAVING COUNT(*) > 1
) AS x
)
ALTER TABLE `site_countries` ADD UNIQUE (
`site_id`,
`country_id`
);
cột site_country_id là khóa chính của table site_countries
Câu DELETE sẽ xóa các dòng có site_id và country_id trùng nhau (duplicated records)
và sau cùng là ALTER TABLE để unique 2 columns : site_id và country_id.