
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文を組み立てればいいのか思いつきません。
なので、何かきっかけになるようなことでも構いませんので、教えてください。
よろしくお願いします。
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がそれです)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
複数レコードの複数フィールドを一括UPDATE出来ますか?
Oracle
-
オラクルのUPDATEで複数テーブル
Oracle
-
updateの一括実行
Oracle
-
-
4
他のテーブルを参照した値はupdateでsetできない?
Oracle
-
5
UPDATE文のWHERE条件に他のテーブルのフィールドも入れたい
SQL Server
-
6
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
7
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
8
はじめまして!
Oracle
-
9
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
単一グループのグループ関数で...
-
データ
-
SELECT FOR UPDATE で該当レコ...
-
AccessのSQL文で1件のみヒット...
-
where句中のtrim関数について
-
updateで複数行更新したい
-
group byの並び順を変えるだけ...
-
引数によってwhere句を切り替え...
-
SQL*Loader Append
-
osqleditについて
-
PL/SQLでフェッチでNULLの項目...
-
トランザクションログを出力せ...
-
440 OIP エラーについて(ORADC)
-
【PL/SQL】FROM区に変数を使う方法
-
アクセスのレポートでレコード...
-
BLOB型項目をSQLの検索条件に指...
-
SQLローダーCSV取込で、囲み文...
-
Oracleで「文字が無効です」の...
-
テーブルの最後(最新)のレコー...
-
select文の実行結果に空白行を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
where句中のtrim関数について
-
データ
-
SQL*Loader Append
-
AccessのSQL文で1件のみヒット...
-
引数によってwhere句を切り替え...
-
トランザクションログを出力せ...
-
updateで複数行更新したい
-
アクセスのレポートでレコード...
-
group byの並び順を変えるだけ...
-
「数字で始まらない」ものを抽...
-
osqleditについて
-
SQLで条件にヒットしたレコード...
-
デフォルトでデータが表示され...
-
BLOB型項目をSQLの検索条件に指...
-
1レコード全てを改行なしで表...
-
トリガからプロシージャのコー...
-
PL/SQLでフェッチでNULLの項目...
おすすめ情報