どもです。
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;
解:厳密にはできないけど、元の値を更新値にしてしまえば結果は同じ。