SQLserver----对成绩表、笔试成绩提高5分 100分封顶

语法 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 的条件,故变化)








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值