1. ホーム
  2. mysql

[解決済み] MySQL: 条件が満たされた場合のみフィールドを更新する

2023-07-18 14:15:26

質問

MySQL で、特定の条件が満たされた場合にのみフィールドの値を更新する UPDATE クエリを実行することは可能ですか? このようなものです。

UPDATE test
SET
    CASE
        WHEN true
        THEN field = 1
    END
WHERE id = 123

言い換えれば

UPDATE test
SET
    something = 1,        /*field that always gets updated*/
    CASE
        WHEN true
        THEN field = 1    /*field that should only get updated when condition is met*/
    END
WHERE id = 123

どのような方法が適切でしょうか?

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

はい、そうです。

ここに別の例があります。

UPDATE prices
SET final_price= CASE
   WHEN currency=1 THEN 0.81*final_price
   ELSE final_price
END

これは、MySQL が変更がなければ行を更新しないため、動作します。 ドキュメントに記載されているように :

カラムを現在持っている値に設定すると、MySQL はこのことに気付き 更新されません。