當遇到需要根據條件進行多條資料更新的時候,會使用case when,如下:
update TABLE set column1 = CASE
WHEN column2 = 'name1' then 'modify1'
WHEN column2 = 'name2' then 'modify2'
end;
但是這裡有一個坑:當使用這個sql進行更新的時候,滿足條件的語句更新成該有的值
但是其他在表中不滿足sql條件的資料行的column1會被置成空,造成嚴重的線上問題
是以case when在使用的時候應該避免去修改其他不滿足條件的資料行,應該使用where圈定改動資料行的範圍:
update TABLE set column1 = CASE
WHEN column2 = 'name1' then 'modify1'
WHEN column2 = 'name2' then 'modify2'
end
where column2 in ('name1','name1');
如果真的不放心使用線上上環境,那還是老老實實的一條一條去更新吧