Wenn Sie doppelte Städte mit derselben state_id
entfernen möchten (doppelte Datensätze), Sie können dies tun, indem Sie sie nach city
gruppieren und state_id
und mit MIN
oder MAX
Funktion:
Vor der Löschabfrage sah Ihre Tabelle wie
aus| 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 |
Sie können die folgende Abfrage verwenden, um doppelte Datensätze zu entfernen:
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;
Nach Anwendung der obigen Abfrage sieht Ihre Tabelle so aus:
| 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 |
Siehe dieses SQLFiddle
Weitere Informationen finden Sie unter DELETE
Syntax von MySQL.