如何编写基于ColumnA区间更新ColumnB的SSMS SQL UPDATE语句?
解决方案:根据ColumnA区间批量更新ColumnB
没问题,这需求用SQL的CASE条件表达式就能完美实现,刚好对应你分四个区间更新ColumnB的逻辑。直接上可用的代码:
UPDATE my_table SET ColumnB = CASE WHEN ColumnA < 15 THEN 0 WHEN ColumnA >= 15 AND ColumnA < 28 THEN 1 WHEN ColumnA >= 28 AND ColumnA < 43 THEN 2 WHEN ColumnA >= 43 AND ColumnA < 60 THEN 3 -- 可选:处理ColumnA >=60的情况,不想改动就保留原值,否则设为指定值 -- ELSE ColumnB END -- 可选:仅更新目标区间的行,避免无意义的操作 WHERE ColumnA < 60;
关键点说明:
CASE表达式会按顺序匹配条件,一旦命中就返回对应值,完全不用担心区间重叠的问题- 严格按照你要求的左闭右开区间(比如
15 ≤ ColumnA < 28)编写条件,确保逻辑完全符合你的需求 - 如果你存在
ColumnA ≥ 60的行,建议补充ELSE分支:想保持这些行的ColumnB不变就写ELSE ColumnB;要统一设置成特定值(比如4)就写ELSE 4 - 加上
WHERE ColumnA < 60可以只更新目标区间内的行,既能提升执行效率,也避免对不需要改动的行做无意义的赋值
稳妥测试建议:
在正式执行UPDATE之前,先跑个SELECT语句验证逻辑是否正确,避免误操作:
SELECT ColumnA, ColumnB AS Original_ColumnB, CASE WHEN ColumnA < 15 THEN 0 WHEN ColumnA >= 15 AND ColumnA < 28 THEN 1 WHEN ColumnA >= 28 AND ColumnA < 43 THEN 2 WHEN ColumnA >= 43 AND ColumnA < 60 THEN 3 ELSE ColumnB END AS New_ColumnB FROM my_table WHERE ColumnA < 60;
这样就能提前看到更新后的预期结果,确认没问题再执行UPDATE,更稳妥~
内容的提问来源于stack exchange,提问作者TigSh
相关产品推荐
相关产品推荐

