- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLでSELECTした一覧をUPDATEする方法を教えてください。)
SQLでSELECTした一覧をUPDATEする方法を教えてください
このQ&Aのポイント
- AテーブルとBテーブルをINNER JOINしてSELECTした結果を使ってUPDATEする方法を教えてください。
- 指定の条件に合致するレコードの特定の項目を、別のテーブルの同じ項目で更新する方法を教えてください。
- AテーブルとBテーブルを結合し、特定の条件に該当するレコードの項目を更新する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SQL Server 2005 という前提で回答します。 SelectによるUpdateの場合は、SETする内容が更新テーブルに対して確実に1つの結果でなければエラーとなります。 つまり、 Update TableA Set ColumnA = ( select 'a' from TableB ) (複数行帰る) ような書き方はできません。 上記のクエリの TableB が1レコードのみの場合、 TableAのColumnA列に全て 'a' という文字が入ります。 したがって、 ( select top 1 'a' from TableB ) で結果行が1レコードとなり更新可能かと思います。 ちなみに、BテーブルのCodeが同じであればPointZanは全て同じ値がはいるのでしょうか?それとも、主キーであり常に1レコードのはずなのにエラーとなっている? -----------------代替案------------------- または、質問者様のクエリはどうも構文のエラーのような気がします。 AテーブルのPointZan 列を、BテーブルのPointZan と同じ値にUpdateしたいということでしょうか? でしたら、 update A set A.PointZan = B.PointZan from A inner join B on B.Code = A.Code where (B.TrDate = '091012') AND (B.Comment = '失効中止') こちらで更新可能かと。