1. ホーム
  2. mysql

[解決済み] MySQL - 1つのクエリで異なる値を持つ複数の行をUPDATEする

2022-04-18 01:31:19

質問

異なる値を持つ複数の行をUPDATEする方法を理解しようとしているのですが、どうしてもうまくいきません。解決策はどこにでもあるのですが、私には理解するのが難しく見えます。

例えば、3つの更新を1つのクエリにする場合。

UPDATE table_users
SET cod_user = '622057'
    , date = '12082014'
WHERE user_rol = 'student'
    AND cod_office = '17389551'; 

UPDATE table_users
SET cod_user = '2913659'
    , date = '12082014'
WHERE user_rol = 'assistant'
    AND cod_office = '17389551'; 

UPDATE table_users
SET cod_user = '6160230'
    , date = '12082014'
WHERE user_rol = 'admin'
    AND cod_office = '17389551'; 

I 読む の例ですが、クエリの作り方がよくわかりません。

UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
    ,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;

WHERE条件とIF条件に複数の条件がある場合、どのようにクエリを実行するのかが全く分かりません。何かアイデアはありますか?

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

この方法でできます。

UPDATE table_users
    SET cod_user = (case when user_role = 'student' then '622057'
                         when user_role = 'assistant' then '2913659'
                         when user_role = 'admin' then '6160230'
                    end),
        date = '12082014'
    WHERE user_role in ('student', 'assistant', 'admin') AND
          cod_office = '17389551';

日付の書式がよくわからないのですが。 日付は、ネイティブの日付と時刻の型を使ってデータベースに保存されるべきです。