2008年4月14日月曜日

[.NET]INSERT時に重複レコードを取り除く

たまに、テーブルからテーブルへデータをコピーしたいときがあります。そういう時以下のようなSQLを実行します。

INSERT INTO T_ADRESS_1
  SELECT * FROM T_ADRESS_2
  WHERE
  T_ADRESS_2.ADDRESS LIKE '大阪府%'


これは、T_ADRESS_2のADDRESSが「大阪府」で始まるレコードをT_ADRESS_1にコピーするというSQLになります。

しかし、T_ADRESS_1にすでに登録されている情報がある場合、キー重複エラーになったり、不要なレコードが増えてしまいます。

1件ずつチェックしながらデータをチェックしながらコピーすれば確実なんですが、件数が多い場合パフォーマンスが出ません。

で、よく考えてみると、INSERTする前にT_ADRESS_1を同じ条件でDELETEしておけば。。。ということにいまさら気がつきました。。。その他、NOT EXISTを使う方法もありますね。

0 件のコメント: