1. ホーム
  2. sql

[解決済み] T-SQL。UPDATEステートメントでCASEを使用し、条件に応じて特定のカラムを更新する。

2022-08-05 10:04:16

質問

このようなことが可能でしょうか?ある条件が真であればx列を更新し、そうでなければy列を更新したいのです。

UPDATE table SET
     (CASE (CONDITION) WHEN TRUE THEN columnx
                       ELSE columny
      END)
= 25

あちこち検索して、いろいろと試してみたのですが、解決策が見当たりません。無理だと思うのですが、どなたかやったことがある方がいらっしゃればと思い、こちらで質問させていただきました。よろしくお願いします。

どのように解決するのですか?

条件を使用してクエリの構造を変更することはできませんが、関係するデータだけは変更できます。こうすればいいんです。

update table set
    columnx = (case when condition then 25 else columnx end),
    columny = (case when condition then columny else 25 end)

これは意味的には同じですが、次の点に注意してください。 両方のカラムは常に更新される . これは はおそらく は何の問題も引き起こさないでしょうが、トランザクション量が多い場合は、同時実行の問題が発生する可能性があります。

を行う唯一の方法は 具体的には を行う唯一の方法は、動的SQLを使用することです。しかし、これは私が手を出さないことをお勧めするものです。上記の解決策は、ほぼ間違いなく、あなたが求めているものに対して十分なものでしょう。