- ベストアンサー
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文を組み立てればいいのか思いつきません。 なので、何かきっかけになるようなことでも構いませんので、教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本的な発想としては、その両方の抽出を一気に行って、場合分けで更新するということになると思います。 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がそれです)。
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
UPDATE TEST SET C = '200', D = CASE WHEN B='010' THEN '250' ELSE '280' END みたいな感じにはできますが。
お礼
CASE文を使って組み立ててみます。 ありがとうございました。
お礼
あ、CASE文を使えばいいんですね。ずっとIF文を使って考えてました。 早速やってみます。ありがとうございます。