Jeśli chcesz usunąć zduplikowane miasto o tym samym state_id
(zduplikowane rekordy), możesz to zrobić, grupując je według city
i state_id
i używając MIN
lub MAX
funkcja:
Przed usunięciem zapytania Twoja tabela wyglądała jak
| 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 |
Aby usunąć zduplikowane rekordy, możesz użyć następującego zapytania:
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;
Po zastosowaniu powyższego zapytania Twoja tabela będzie wyglądać tak:
| 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 |
Zobacz ten SQLFiddle
Aby uzyskać więcej informacji, zobacz DELETE
Składnia MySQL.