インターネット上で重複したデータを見つけて削除し、最も小さいIDのデータを保持します。方法は次のとおりです:
DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GROUP BY peopleName HAVING count(peopleName) > 1 ) AND peopleId NOT IN ( SELECT min(peopleId) FROM people GROUP BY peopleName HAVING count(peopleName) > 1 )
自分で使用すると、エラーメッセージが表示されます:
1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)
[Err] ] 1093 - FROM句で更新対象テーブル「XXX」を指定することはできません
原因はまだ分かりません。
次に、操作を分散する方法を見つけます。最初に重複ユーザーのデータをフィルターで除外し、次に max() を使用して大きい行を選択します:
SELECT max(id) from tb GROUP BY user HAVING count(user)> ; 1
次に、取得したmax(id)に基づいて冗長なデータを1つずつ削除します
1 delete from tb where id=xx
以上がMysql は重複データを削除し、最小の ID を保持しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。