load local infile
2,800 万レコードのテーブルがありますが、コマンドが既にテーブルにある行を無視すると仮定したため、現在は 5,600 万レコードになっています。いいえ、重複行を効率的に削除する方法が必要です。これにアプローチする最良の方法は何ですか?
テーブルに触れたくない場合は、次のステートメントで一意の行を選択できます。
select distinct (l1.lat, l2.lon) from A, B;
オリジナルを選択して新しい/一時テーブルに入れ、5,600 万のレコードを削除し、オリジナルを挿入します。
例: INSERT INTO new_fresh_table SELECT a, b, c, d FROM table_with_dupes GROUP BY a, b, c, d
どういうわけか ID をだましてしまった場合 (PK でそれがどのように可能かはわかりません)、GROUP BY
すべての列で使用する必要があります。あなたのためにあなたのために書くためSELECT
にメタデータに対して書いてSELECT
ください。
レコードが複製される方法を指定しませんでした。主キーですか?名前?何?
O'Reily のSQL Cookbookから(SQL のプロにも強くお勧めします):
delete from dupes
where id not in ( select min(id) from dupes group by name )