2016-10-26 13 views
0

私はSQLテーブルに重複している特定のジオコーディングされたアドレスを持っています。列に基づいて重複する行を削除する方法SQL

SELECT 
address`, COUNT(*) 
FROM stores 
GROUP BY address` 
HAVING COUNT(*) > 1 

はしかし、それだけで(2れる)の重複を示すと、私は削除するいずれかを選択させませんアドレスと実際のカウントを示しています。私は以下のコードを書いています。重複を削除するために追加する必要がある追加のSQLコマンドは何ですか?

+0

一意の列であると仮定すると - http://stackoverflow.com/questions/18932/how-can-i-remove -duplicate-rows –

+0

[指定された番号(行数の制限)を除いて、[テーブルから行を削除]の可能な複製](http://stackoverflow.com/questions/24527833/deleterows-from-table-except-specified-number) -limit-of-rows) – Hill

+0

DELETE文でLIMIT句を使用できます。どのようにDELETEを実行するのかによっては、検索されたカウント - 1の制限でそれらを構築することができます。 – Uueerdo

答えて

0

idがこの投稿は、SQLで重複行の削除について話している、あなたのテーブルにstores

DELETE FROM stores WHERE id NOT IN 
    (SELECT min FROM (SELECT MIN(id) AS min FROM stores GROUP BY address) AS T1) 
+0

残念ながら、削除された行がないようです。あなたはT1を説明できますか? – chronotrigga

+0

@chronotrigga質問に間違いがありました。その修正。今すぐチェックしてください。 T1はmysqlのエラー1093を回避するために使用されます。ターゲットテーブルを削除することはできないためです。 – jophab

関連する問題