热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

语法updatetableset字段1casewhen条件1then值1when条件2then值2

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









推荐阅读
author-avatar
antingwolf
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有