ど素人から毛を生やす。<延>

[MySQL]複数列を条件付きUPDATE

Web > Other 2019年8月29日(最終更新:4年前)

2019年8月29日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。
MySQLにて。

UPDATEの際、「条件を満たすなら更新を適用」ならWHEREの方に条件を書けば良い。
しかし更新対象列が複数ある中で、「この列(カラム)の更新には条件をつけたい」場合では、WHEREでは全体の条件となるため不可となります。

解:SET内で、CASE-WHENが使用可能です。


# targetに値があるなら「A」、空欄なら「B」と更新する
UPDATE tableName SET target = CASE WHEN target<>'' THEN 'A' ELSE 'B' END;

問:「条件を満たせば更新、満たさなければ更新しない」は可能?


# targetに値があるなら更新しない、空欄なら「B」と更新する
UPDATE tableName SET target = CASE WHEN target<>'' THEN target ELSE 'B' END;

解:厳密にはできないけど、元の値を更新値にしてしまえば結果は同じ。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)