私は 100 万件近くのレコードを含むデータベース テーブルを持っています - それらのいくつが重複しているかを確認するクエリを作成したとき - 重複しているレコードが 90,000 件近くあります - 重複とは、同じ電子メール アドレスを持つレコードを意味します - 1 つの電子メール アドレスのように- 10 件のレコードが存在する可能性があります。
サンプルデータ
ID | 名前 | メール | 電話 1 | abc | abc@gmail.com | 12345 2 | デフ | def@gmail.com | 12533 3 | abc | abc@gmail.com | 4 | ひじ | hij@gmail.com | 50633 5 | abc | abc@gmail.com | 12345 6 | デフ | def@gmail.com |
1) ID は、テーブルの自動インクリメント主キーです。
2) def@gmail.com のように 2 つのレコードが存在する場合 - 電話を含むレコードを保持し、他のレコードを削除する必要があります
3) abc@gmail.com の場合 - 3 つのレコードがあります - 電話のないレコードが削除されます - 残りの 2 つのうち - どちらにもすべてのデータがありますが - 最初のレコードを保持し、2 番目のレコードを削除します
条件に基づいて削除ステートメントを作成することは可能ですか、またはこれを達成するためのより簡単な方法はありますか?
遊んでみる SQLfiddle - http://sqlfiddle.com/#!2/cf8c7
どうもありがとう