如题
最近在实习的时候有这样一个需求,就是在数据更新update多个字段的时候有的字段要统一赋值而有的根据条件去set不同的值,例如以下的例子
这是某个班级四位同学的成绩表,这里status我用来表示学生是否及格,0表示不及格,1表示及格,初始化全都设为不及格,显然是不正确的。然后现在老师想要把status修改正确同时给这个表里所有同学标注上班级,假设都是1班的同学。
笨逼如我一开始也没啥好办法,就想着简单的先用一条语句把班级标上,再用一条语句把status给改正确了,后来发现sql中有一个if的用法,具体语句如下
update user set class = '1班',status = if(grade>=60,1,0)
结果如下
只用了一条语句就更新成功了
这里更新的对象是表里所有的成员,但是在对分数进行设置的时候我们可以用if的语法来实现对所有成员的部分更新即
update `table` set `a`=`value1` , `b`=if(条件,`value2`,`value3`) .....
其中a为所有对象都要更新的固定字段,而b是是要根据条件灵活更新的字段,value2为符合条件赋给b的值,value3为不符合条件的值