同じstate_id
を持つ重複する都市を削除する場合 (重複レコード)、city
でグループ化することでそれを行うことができます およびstate_id
MIN
を使用します またはMAX
機能:
クエリを削除する前は、テーブルは次のようになっていました
| 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 |
次のクエリを使用して、重複するレコードを削除できます。
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;
上記のクエリを適用すると、テーブルは次のようになります。
| 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 |
このSQLFiddleを参照
詳細については、 DELETE
を参照してください。 MySQLの構文。