これ何て呼びますか Part2

いつもありがとう御座います(ご回答いただいた皆様)。

ちょっと悩んでおりますので何かヒントを頂けたら・・・よろしくお願いします。

テーブルAに「会員No」と「来店ポイント」、という列があったとします。

テーブルBにも「会員No」と「来店ポイント」があったとします。

AB両方の会員Noは=です。

テーブルAの「来店ポイント」が間違っているので、テーブルBの「来店ポイント」と
差し替えたいのですが、どの様なクエリになるのでしょうか?

自力で何とかなるかな、、と思い2時間ほど粘りましたが、上手くいかないので・・・

(中堅外食チェーンの板前をしてますが、何故かサーバ管理者までしてます。
若いというだけで・・・そんな環境なので聞ける人も居らず、いつもここが頼りになってます。
すみません)

何卒、よろしくお願いします。

A 回答 (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 ...) のようにする。
    • good
    • 0
この回答へのお礼

ありがとうございました!
感謝、感謝、です。

お礼日時:2011/07/29 11:39

どんなSQLを作ったのでしょう?



----
update テーブルA
set 来店ポイント = b.来店ポイント
From テーブルA a
inner join テーブルB b
on a.会員No = b.会員No
Where a.来店ポイント <> b.来店ポイント
    • good
    • 0
この回答へのお礼

こちらのクエリの方が簡単だった模様です。
今後の参考にします。ありがとうございます。

お礼日時:2011/08/05 16:06

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 様のご苦労をお察しします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報