批量更新SQL数据库中指定时间区间的info字段内容
批量更新数据库时间区间对应字段的解决方案
方案一:单条UPDATE语句批量完成
用CASE WHEN分支逻辑,一次操作处理两个时间区间的更新,避免重复执行语句:
UPDATE 你的表名 SET info = CASE WHEN time BETWEEN '07.00.00' AND '08.00.00' THEN 'attandence' WHEN time BETWEEN '17.00.00' AND '19.00.00' THEN 'go home' ELSE info -- 非目标区间的记录,info保持原样 END WHERE time BETWEEN '07.00.00' AND '08.00.00' OR time BETWEEN '17.00.00' AND '19.00.00';
WHERE子句只筛选需要更新的记录,减少不必要的操作,提升效率ELSE info保证不在两个区间内的记录不会被误改
方案二:拆分两条UPDATE语句(逻辑更直观)
如果觉得单条语句逻辑绕,也可以拆成两条独立操作,分别处理两个时间区间:
-- 处理早高峰考勤记录 UPDATE 你的表名 SET info = 'attandence' WHERE time BETWEEN '07.00.00' AND '08.00.00'; -- 处理晚高峰下班记录 UPDATE 你的表名 SET info = 'go home' WHERE time BETWEEN '17.00.00' AND '19.00.00';
针对你提供的示例数据的效果
执行后示例表的变化:
- 第3、4、6条记录(time在07.00.00-08.00.00区间)的info会被统一设为'attandence'
- 第5条记录(time在17.00.00-19.00.00区间)的info会修正为正确的'go home'(原数据拼写错误为'go gome')
- 第1、2条记录因为info已经是正确值,不会被修改
内容的提问来源于stack exchange,提问作者request
相关产品推荐
相关产品推荐

