• ベストアンサー

UPDATEを同時に実行する

UPDATE文について質問なんですが、 下記のクエリのように条件の違うものを一度に実行させるということは可能なのでしょうか? UPDATE テーブル名 SET No = '2' WHERE No = '3' ・・・(1) UPDATE テーブル名 SET No = '3' WHERE No = '2' ・・・(2) (1)を実行し(2)を実行すると、期待通りの結果がどうしても得られません。 どなたかわかる方がいらっしゃれば、よろしくお願いしますm(__)m

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

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 以下のSQL 文でどうでしょうか? Update テーブル名 set No = 5 - No where No in ('2', '3'); 暗黙のデータ型変換を行わせたくないのであれば、 以下のSQL 文でもOk です。 ※ to_char, to_number 関数は使用しているデータベースによって   異なる可能性があります。 Update テーブル名 set No = to_char(5 - to_number(No))  where No in ('2', '3');

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 変数の内容を入れ替えるのと同じ要領で、 UPDATE テーブル名 SET No = 'Temp' WHERE No = '3' UPDATE テーブル名 SET No = '3' WHERE No = '2' UPDATE テーブル名 SET No = '2' WHERE No = 'Temp' という感じで行えばいいと思います。 "Temp"はデータ中に絶対に存在しないものを使用して下さい。

snowsaab
質問者

お礼

なるほど! クエリもそのような入れ替えで行えばよいのですね。 期待通りの結果を得ることができました。 ありがとうございましたm(__)m

関連するQ&A