• ベストアンサー

updateで複数行更新したい

OracleのSQLについて質問があります。 UPDATE文を1度しか使わずに、抽出条件の異なるデータを複数個更新することは可能ですが? 例えば、 テーブル名:TEST カラム: A B C D UPDATE A B C D 100 010 350 300 → 100 010 200 250 100 020 350 000 → 100 020 200 280 という感じで更新したいのですが、どんなUPDATE文を組み立てればいいのか思いつきません。 なので、何かきっかけになるようなことでも構いませんので、教えてください。 よろしくお願いします。

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

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

基本的な発想としては、その両方の抽出を一気に行って、場合分けで更新するということになると思います。 UPDATE TEST SET C=CASE WHEN B IN ('010','020') THEN '350' ELSE C END, D=CASE WHEN B='010' THEN '250' WHEN B='020' THEN '280' ELSE D END WHERE B IN ('010','020') など。 あまりに複雑な抽出条件なら複数回UPDATEした方がいいですが、無駄を承知で広めに抽出し、更新の条件に合わなければ同じ値をセットするという考え方も取れなくはないです(上記のELSEがそれです)。

agl
質問者

お礼

あ、CASE文を使えばいいんですね。ずっとIF文を使って考えてました。 早速やってみます。ありがとうございます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

UPDATE TEST SET C = '200', D = CASE WHEN B='010' THEN '250' ELSE '280' END みたいな感じにはできますが。

agl
質問者

お礼

CASE文を使って組み立ててみます。 ありがとうございました。

関連するQ&A