Nếu bạn muốn xóa thành phố trùng lặp có cùng state_id
(bản ghi trùng lặp), bạn có thể làm điều đó bằng cách nhóm chúng theo city
và state_id
và sử dụng MIN
hoặc MAX
chức năng:
Trước khi xóa truy vấn, bảng của bạn trông như thế nào
| ID | STATE_ID | CITY |
------------------------------
| 1 | 1 | city_one |
| 2 | 1 | city_two |
| 3 | 1 | city_one |
| 4 | 1 | city_two |
| 5 | 2 | city_one |
| 6 | 3 | city_three |
| 7 | 3 | city_one |
| 8 | 3 | city_three |
| 9 | 4 | city_four |
| 10 | 4 | city_five |
Bạn có thể sử dụng truy vấn sau để xóa các bản ghi trùng lặp:
DELETE city_table
FROM city_table
LEFT JOIN
(SELECT MIN(id) AS IDs FROM city_table
GROUP BY city,state_id
)A
ON city_table.ID = A.IDs
WHERE A.ids IS NULL;
Sau khi áp dụng truy vấn trên, bảng của bạn sẽ trông giống như sau:
| ID | STATE_ID | CITY |
------------------------------
| 1 | 1 | city_one |
| 2 | 1 | city_two |
| 5 | 2 | city_one |
| 6 | 3 | city_three |
| 7 | 3 | city_one |
| 9 | 4 | city_four |
| 10 | 4 | city_five |
Xem SQLFiddle này
Để biết thêm, hãy xem DELETE
Cú pháp của MySQL.