以下の条件がかなうSQLを作成したいのですが、うまいやり方が思いつきません。SQLそのものもそうですが、SQLを作成するための考え方などについてもご教授いただけると幸いです。
条件:
・AテーブルとBテーブルがあり、Aテーブルのデータを更新します。
・AテーブルとBテーブルで主キーが一致するデータが存在するときは、BテーブルのデータでAテーブルをUPDATEします。
・AテーブルとBテーブルで主キーが一致しない(Bテーブルにしかデータが存在しない)場合は、BテーブルのデータをAテーブルへINSERTします。
・Aテーブルにしか存在しないデータは特に更新されません。
http://ask.sqlservercentral.com/questions/41775/alternate-of-merge-command-in-sql-2000.html
そのやりたいことはUPSERTと呼ばれており、特に複数行の一括UPSERTをするのにはMERGEというコマンドが今は用意されています。
2000にはないコマンドなので、リンク先の通り、insertとupdateの二段階でやってください。
コメント(1件)
SQL Server2008以降なら MERGE文が使えます。
ということは、それ以前は そのような構文はないということです。
つまり 別々にやるしかないということですね。