题解 114 | #更新记录(二)#
【场景】:按照条件(批量)更新多值 【分类】:更新记录、update + if、update + case
分析思路
难点:
1.根据条件更新多值。值之间加逗号
方法一、根据指定条件更新
- [使用]:利用where条件查找行后,对列名1字段中的值更新为值1
update 表名 set 列名1 = 值1 [,列名2=值2] [where 条件];
方法二、批量更新
- 使用 if 不同条件更新不同内容
update 表名
set
列名1 = if(条件1,值1,值2),
列名2 = if(条件2,值3,值4)
[where 条件];
- 使用 case when 不同条件更新不同内容
update 表名
set 列名1 =
case
when 条件1 then 值1
when 条件2 then 值2
...
end,
列名2 =
case
when 条件21 then 值21
when 条件22 then 值22
...
end
[where 条件];
扩展
前往查看:MySQL 更新数据
求解代码
方法一:
update + where
update exam_record
set
submit_time = '2099-01-01 00:00:00',
score = 0
where date(start_time) < date('2021-09-01') and score is null
方法二:
使用批量更新多值 + if
update exam_record
set
submit_time = if(date(start_time) < date('2021-09-01') and score is null,'2099-01-01 00:00:00',submit_time),
score = if(date(start_time) < date('2021-09-01') and score is null,0,score)
方法三:
使用批量更新多值 + case when
update exam_record
set
submit_time = case
when date(start_time) < date('2021-09-01') and score is null then '2099-01-01 00:00:00'
else submit_time
end,
score = case
when date(start_time) < date('2021-09-01') and score is null then 0
else score
end