MERGE

二つのテーブルを比較し同じレコードが
あればupdate なければinsert
VBAでならレコードセット取っていろいろとやってれば
できるんでしょうが長くなるしAccess上でとなると時間もかかりそうな
のでSQLServerでしたい

となるとMERGEという事になるらしいです。
クエリ一文で済みます、たぶん。

merge into dbo.TableA as A
using dbo.TableB as B
on
(A.ID=B.ID)
when matched then
update set
name=B.name,
kana=B.kana,
Email=B.Email
when not matched then
insert(id,name,kana,email)
values(
B.ID,
B.name,
B.kana,
B.Email
)
;

肝はIDが一意であるという事ですがDBで一意となると自然増加のIDに
なっている事が多いでしょうからTableAの自然増加は外す
それとやはりSQLServerとMySQL間でMERGEは無理なのでテーブルを
移行させておく準備が必要

updateとinsertを同時に行うのでupsertともいうらしい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です