作者:antingwolf | 来源:互联网 | 2023-08-22 18:35
语法 update table
set 字段1=case
when 条件1 then 值1
when 条件2 then 值2
else 值3
end
首先建立一个表 stuMarks(学生成绩表)
stuMarks中存放字段、分别代表 考试编号、学生编号、笔试成绩、机试成绩
插入数据:
-- 笔试成绩提高5分 100分封顶
思路:笔试成绩小于95 的加5分 ,大于等于95 更新为100
update stuMarks set writtenExam = case when
writtenExam <95 then writtenExam+5
else 100 end
from stuMarks
也可以用两个 update语句 分开写
但是此时要注意的是,两行语句顺序不能错,—— 先执行第一行>= 95语句,再执行第二行<95 语句,
--因为假设一名学生笔试成绩为94分,当先执行第二行语句后,更新为99分。
--此时再执行第一行语句,则此列值满足>95 ,又更新为100。结果有误 。
--故先执行第一行使得>= 95 的成绩先更新
update stuMarks set writtenExam = 100 where writtenExam >= 95
update stuMarks set writtenExam += 5 where writtenExam <95
此时再查看表中数据 select * from stuMarks
----批量更新 笔试成绩、机试成绩提高5分,100分封顶,
很简单,即逗号连接两个条件。
update stuMarks set writtenExam = (case when writtenExam > 95 then 100 else writtenExam+5 end),
labExam = (case when labExam > 95 then 100 else labExam+5 end)
此时再查看表中数据 select * from stuMarks (此时笔试成绩 writtenExam原始数据为上图数据,又进行了加5 的条件,故变化)