You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:08:35