题解 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
全部评论

相关推荐

我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
15 8 评论
分享
牛客网
牛客企业服务