1. ホーム
  2. mysql

[解決済み] SQL - 1つのクエリで複数のレコードを更新する

2022-03-03 10:43:27

質問

私はテーブルを持っている - 。 コンフィグ . スキーマ config_name | config_value

そして、私は1つのクエリで複数のレコードを更新したいと思います。私はそのようにしようとします。

UPDATE config 
SET t1.config_value = 'value'
  , t2.config_value = 'value2' 
WHERE t1.config_name = 'name1' 
  AND t2.config_name = 'name2';

が、このクエリは間違っています :(

助けてもらえますか?

解決方法を教えてください。

マルチテーブル更新構文のいずれかを試す

UPDATE config t1 JOIN config t2
    ON t1.config_name = 'name1' AND t2.config_name = 'name2'
   SET t1.config_value = 'value',
       t2.config_value = 'value2';

以下は SQLFiddle デモ

または条件付き更新

UPDATE config
   SET config_value = CASE config_name 
                      WHEN 'name1' THEN 'value' 
                      WHEN 'name2' THEN 'value2' 
                      ELSE config_value
                      END
 WHERE config_name IN('name1', 'name2');

以下は SQLFiddle デモ