2009-06-29 26 views
1

パフォーマンスを向上させるために、以下のスクリプトから新しい方法を書いて、重複行を削除する方法を知っている人は誰でも知っています。重複行を削除する

DELETE lt1 FROM #listingsTemp lt1, #listingsTemp lt2 
    WHERE lt1.code = lt2.code and lt1.classification_id > lt2.classification_id and (lt1.fap < lt2.fap or lt1.fap = lt2.fap) 
+0

申し訳ありませんが、私は質問を理解していません。あなたは「下のスクリプトから新しい方法を書いて」明確にすることはできますか?また、スキーマを変更してID列を追加することができる場合は、これを1回だけ実行するか、継続的に行うかを選択しますか? –

答えて

1

1 - あなたのテーブル(T1) 2のためのID列(ID)を作成します - あなたの条件であなたのテーブルの上で、グループを行い、重複レコードのIDを取得します。 3 - IDの重複IDが設定されているt1からレコードを削除するだけです。

2

Delete Duplicate Rows in a SQL Table:あなたの一時テーブルを作成するときに

delete table_a 
where rowid not in 
(select min(rowid) from table_a 
group by column1, column2); 
+0

http://stackoverflow.com/questions/841447/delete-duplicate-sql-records –

+0

http://stackoverflow.com/questions/529098/removing-duplicate-rows-from-table-in-oracle –

0

BINARY_CHECKSUMに見て....あなたはおそらく、データが同じであれば、より迅速に判断するためにそれを使用することができます....たとえば新しいフィールドを作成します両方のテンポラリテーブルでbinary_checksumの値を格納しています...これらのフィールドが等しい場所を削除してください

0

odisehの回答は有効であるようですが(+1)、何らかの理由でテーブルの構造を変更できないそれを使っているアプリケーションのコードがないので)、すべてのnigを実行するジョブを書くことができます(Moayad Mardiniコードを使用して)重複を削除します。