• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:select結果でのupdate)

select結果でのupdate

このQ&Aのポイント
  • テーブルAのnameに、テーブルBのnameを入れたい。
  • テーブルAとBはidでリレーションを張っている。
  • UPDATE文でnameを更新する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tanshio2
  • ベストアンサー率54% (20/37)
回答No.2

すいません、補足です。 UPDATE hoge1 SET name = (select b.name from hoge2 b , hoge1 a where b.id = a.id ) ; の何が悪いか、という点ですが、 副問い合わせの中で「hoge1 (AS) a 」としてるのに、最初にupdate hoge1 としてるのが アウトとなるようです。ただこの場合、AS句のスコープも関係してきますので、 こういう場合は素直にテーブル名を書いたほうがよいです。 http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.4-ja/queries-table-expressions.html#QUERIES-FROM 辺りがヒントです。

jyunk
質問者

お礼

ありがとうございます。 たしかに、テーブル名を直で書くと動作しますね。 なるほど。ASのスコープが原因なのですね。。。。 結局今回はPGでやっちゃったのですが次回から使おうと思います。 ありがとうございました。

その他の回答 (1)

  • tanshio2
  • ベストアンサー率54% (20/37)
回答No.1

hoge1 を test1 hoge2 を test2 hoge1.name を name1 hoge2.name を name2 に置き換えて読んでください。 update test1 set name1 = (select name2 from test2 where test1.id = test2.id) where id = (select id from test2 where test1.id = test2.id) これでうまくいきました。

関連するQ&A