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

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

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

どもです。
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)