1

load local infile2,800 万レコードのテーブルがありますが、コマンドが既にテーブルにある行を無視すると仮定したため、現在は 5,600 万レコードになっています。いいえ、重複行を効率的に削除する方法が必要です。これにアプローチする最良の方法は何ですか?

テーブルに触れたくない場合は、次のステートメントで一意の行を選択できます。

select distinct (l1.lat, l2.lon) from A, B;
4

3 に答える 3

5

オリジナルを選択して新しい/一時テーブルに入れ、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ください。

于 2012-06-06T18:35:23.310 に答える
0

レコードが複製される方法を指定しませんでした。主キーですか?名前?何?

O'Reily のSQL Cookbookから(SQL のプロにも強くお勧めします):

delete from dupes
  where id not in ( select min(id) from dupes group by name )
于 2012-06-06T18:40:07.620 に答える