天天看點

使用Case When遇到的深坑

當遇到需要根據條件進行多條資料更新的時候,會使用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');

如果真的不放心使用線上上環境,那還是老老實實的一條一條去更新吧