匿名質問者

SQLServer8.0にてデータのUPDATEとINSERTを同時に行いたいと考えています。

以下の条件がかなうSQLを作成したいのですが、うまいやり方が思いつきません。SQLそのものもそうですが、SQLを作成するための考え方などについてもご教授いただけると幸いです。

条件:
・AテーブルとBテーブルがあり、Aテーブルのデータを更新します。
・AテーブルとBテーブルで主キーが一致するデータが存在するときは、BテーブルのデータでAテーブルをUPDATEします。
・AテーブルとBテーブルで主キーが一致しない(Bテーブルにしかデータが存在しない)場合は、BテーブルのデータをAテーブルへINSERTします。
・Aテーブルにしか存在しないデータは特に更新されません。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/28 12:06:26

ベストアンサー

匿名回答2号 No.1

スマートフォンから投稿

http://ask.sqlservercentral.com/questions/41775/alternate-of-merge-command-in-sql-2000.html

そのやりたいことはUPSERTと呼ばれており、特に複数行の一括UPSERTをするのにはMERGEというコマンドが今は用意されています。

2000にはないコマンドなので、リンク先の通り、insertとupdateの二段階でやってください。

  • 匿名回答1号
    匿名回答1号 2013/08/21 17:03:53
    http://www.geocities.jp/oraclesqlpuzzle/sqlserver/sqlserver-3-2.html

    SQL Server2008以降なら MERGE文が使えます。
    ということは、それ以前は そのような構文はないということです。

    つまり 別々にやるしかないということですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません