0


MySQL 更新数据 不同条件(批量)更新不同值

一般在更新时会遇到以下场景:1.全部更新;2.根据条件更新字段中的某部分内容;3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法。

一、方法分类

更新数据方法分类

二、具体用法

(1)根据条件更新值

  • 根据指定条件更新(多列)(全部更新)

把表中 [符合条件的行的] 列名1字段中的值全部修改为值1 [,列名2字段中的值修改为值2]。

update 表名 
set 列名1= 值1[,列名2=值2][where 条件];
  • 替换指定值(多列)(部分更新)

把表中 [符合条件的行的] 列名1字段中的查找内容全部修改为替换内容 [,列名2字段中的查找内容全部修改为替换内容]。

update 表名 
set 列名1=replace(列名1,'查找内容','替换内容')[,列名2=replace(列名2,'查找内容','替换内容')][where 条件];

(2)按照不同条件(批量)更新不同值

  • 使用 if

把表中 [符合条件的行的] 列名1字段中符合条件1的内容修改为值1,否则修改为值2 [,列名2字段中符合条件2的内容修改为值3,否则修改为值4]。

updatetableset 
    列名1=if(条件1,值1,值2),
    列名2=if(条件2,值3,值4)[where 条件];
  • 使用 case when

把表中 [符合条件的行的] 列名1字段中符合条件1的内容修改为值1 [,符合条件2的修改为值2,…] [,列名2字段中符合条件21的内容修改为值21,符合条件22的修改为值22,…] 。

updatetableset 列名1=casewhen 条件1then 值1when 条件2then 值2when 条件3then 值3...end,
    列名2=casewhen 条件21then 值21when 条件22then 值22when 条件23then 值23...end[where 条件];

三、实例

students 表 (id表示主键,name是姓名,score是平均成绩)
idnamescore1李明992张三743孙华59

(1)根据条件更新值

  • 把 students 表中 name 为张三的 score 字段的值全部修改为100。
#使用whereupdate students 
set score =100where name ='张三';

idnamescore1李明992张三1003孙华59

  • 把 students 表中 id 大于等于2的所有行中 score 中59的部分全部修改为0,name 中三的部分全部修改为四。
#使用replaceupdate students 
set score =replace(score,59,0),
    name =replace(name,'三','四')where id >=2;

注意:张三替换之后是张四,并不是只有字段等于三时才能替换。

idnamescore1李明992张四743孙华0

(2)按照不同条件更新不同值

  • 请把students表中score小于60的score字段全部改为0,否则改为100,name字段中的名字改为不及格,否则改为及格。
#批量更新多值 + ifupdate students 
set 
    score =if(score <60,0,100),
    name =if(score <60,'不及格','及格');

idnamescore1及格1002及格1003不及格0

注意:更新的值要满足建表时的字段类型。比如score是int类型就不能更新为char类型。

  • 请把students表中score小于60的score字段全部改为0,name字段中的名字改为不及格;score大于等于90的score字段全部改为2,name字段中的名字改为优秀;score大于等于60小于90的score字段全部改为1,name字段中的名字改为良好。
#批量更新多值 + case whenupdate students 
set 
    name =casewhen score <60then'不及格'when score >=90then'优秀'else'良好'end,
        score =casewhen score <60then0when score >=90then2else1end;

注意:更新的时候是按照代码语句的先后顺序更新的。可以尝试先更新score后更新name,结果是不一样的。

idnamescore1优秀22良好13不及格0

非常荣幸您能阅读到最后,希望文章中的内容能够帮助到您。
本博客内容均为博主原创,未经授权,请勿转载,谢谢!

标签: mysql 数据库 sql

本文转载自: https://blog.csdn.net/chengyj0505/article/details/128357191
版权归原作者 酸菜鱼土豆大侠 所有, 如有侵权,请联系我们删除。

“MySQL 更新数据 不同条件(批量)更新不同值”的评论:

还没有评论