- ベストアンサー
SQL2005のクエリ文でテーブルAとテーブルBのポイントを差し替える方法について
- SQL2005のクエリ文でテーブルAの「来店ポイント」とテーブルBの「来店ポイント」とを差し替える方法について教えてください。
- 中堅外食チェーンの板前がサーバ管理者までしていて、テーブルAとテーブルBの「来店ポイント」の差し替えについて質問します。
- テーブルAとテーブルBの「会員No」と「来店ポイント」があり、テーブルAの「来店ポイント」をテーブルBの「来店ポイント」と差し替えるSQL2005のクエリ文を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
追記 前の回答で「標準的なクエリ」というのは取り消します。 (簡単だと思ったら、DBMSごとにだいぶ異なるようです) SQL Server 2005 では下のように、結合が使用できるようです。 (試してはいませんが・・・) -- テーブルを結合して更新する update a set a.visit_point = b.visit_point from a_table a, b_table b where a.member_no = b.member_no -- 相関サブクエリを使った例 update a_table a set visit_point = (select b.visit_point from b_table b where a.member_no = b.member_no) where exists (select null from b_table b where a.member_no = b.member_no) -- 更新する値が複数ある場合は set (col1, col2) = (select table1.col1, table2.col2 from table1 ...) のようにする。
その他の回答 (2)
- o_chi_chi
- ベストアンサー率45% (131/287)
どんなSQLを作ったのでしょう? ---- update テーブルA set 来店ポイント = b.来店ポイント From テーブルA a inner join テーブルB b on a.会員No = b.会員No Where a.来店ポイント <> b.来店ポイント
お礼
こちらのクエリの方が簡単だった模様です。 今後の参考にします。ありがとうございます。
- OrangeCup150
- ベストアンサー率62% (109/174)
SQL Server 2005 環境では試していませんが、私の手元の Access 2007 では下の様なクエリで更新できますよ。標準的なクエリですので SQL Server 2005 でも問題ないと思います。 update a_table a, b_table b set a.visit_point = b.visit_point where a.member_no = b.member_no table_a member_no visit_point 100000 10 100001 20 100002 30 table_b member_no visit_point 100000 100 100002 300 update 後 table_a member_no visit_point 100000 100 100001 20 100002 300 # zenigata711 様のご苦労をお察しします。
お礼
ありがとうございました! 感謝、感謝、です。