プロが教えるわが家の防犯対策術!

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文を組み立てればいいのか思いつきません。
なので、何かきっかけになるようなことでも構いませんので、教えてください。
よろしくお願いします。

A 回答 (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がそれです)。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/17 01:19

UPDATE TEST


SET C = '200',
D = CASE WHEN B='010' THEN '250' ELSE '280' END

みたいな感じにはできますが。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/09/17 01:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A