• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:update文におけるwhereとjoinの違いについて)

UPDATE文におけるwhereとjoinの違いについて

このQ&Aのポイント
  • UPDATE文におけるwhereとjoinの違いについて説明してください。
  • 副問い合わせを使ったUPDATE文でwhereを使った結合とjoinを使った結合の違いについて質問です。ORACLE10gを使用しており、SALARYテーブルとEMPLOYEESテーブルを操作しています。whereを使った結合では正しく更新できるのに、joinを使った結合でエラーが発生する理由が分かりません。ご教示願います。
  • UPDATE文におけるwhereとjoinの違いについて具体的な例を挙げて説明してください。SALARYテーブルとEMPLOYEESテーブルがあり、EMPLOYEEID列が主キーです。whereを使った結合とjoinを使った結合の違いを使用しているテーブルのデータを元に説明してください。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

これは明らかに結論が逆です。 【1】は失敗し、【2】は正しく更新されます。 【2】はいわゆる「相関副問い合わせ」なっており、副問い合わせの中でUPDATEの対象のSALARYテーブルを参照しています。したがって、SALARY1行につき正しくAMOUNTが1つ選択され、正しく更新されます。 一方、【1】は単なる「副問い合わせ」であり、副問い合わせの中のSALARYは更新対象となるSALARYとは別のテーブルと見なされています。 だから複数行が返ってエラーになります。 (おそらくこのケースではJOINを使った書き換えはできないのでは)

046
質問者

お礼

jamshid6さん、回答ありがとうございました。 ご指摘のとおりでした。 相関副問い合わせというんですね。 これから勉強してきます。 どうもありがとうございました。

関連するQ&A