You need to enable JavaScript to run this app. SQL单条UPDATE语句如何基于单值匹配实现多列更新,排查语法错误
优惠活动
大模型
产品
解决方案
定价
更多

SQL单条UPDATE语句如何基于单值匹配实现多列更新,排查语法错误

多列条件更新的正确SQL实现

你之前的写法触发Incorrect syntax near ','报错,本质是写法不符合T-SQL的UPDATE语法规则:

  • CASE表达式的设计逻辑是单值输出,一次执行只能返回一个标量结果,没法同时给多列赋值
  • UPDATE语句的SET子句强制要求:每一个待更新的列,都必须独立写「列名 = 赋值逻辑」的格式,不能把多个列名并列堆在等号左侧让单个表达式批量赋值

可直接运行的调整后代码

按照语法规则调整为每个列单独绑定对应CASE判断逻辑,即可在单条语句内完成多列同步更新:

UPDATE HMI.[dbo].Mak8
SET
    reg2 = CASE
        WHEN Mak_Ip = '192.168.0.6' THEN 200
        WHEN Mak_Ip = '192.168.0.8' THEN 210
        ELSE reg2
    END,
    reg3 = CASE
        WHEN Mak_Ip = '192.168.0.6' THEN 250
        WHEN Mak_Ip = '192.168.0.8' THEN 270
        ELSE reg3
    END,
    reg4 = CASE
        WHEN Mak_Ip = '192.168.0.6' THEN 270
        WHEN Mak_Ip = '192.168.0.8' THEN 300
        ELSE reg4
    END

注意事项

  • 上述代码是单条UPDATE语句执行,不会拆成多次全表扫描,执行性能和你之前验证通过的单列更新语句一致
  • 每个CASE分支里保留ELSE 原列名的逻辑,可以匹配你原有的更新习惯:不满足指定IP条件的行,对应列的值不会被修改,保持原有状态
  • SQL Server 2022之前的版本不支持行构造形式的多值CASE语法(即CASE WHEN ... THEN (val1, val2, val3)的写法),强行使用就会触发逗号附近的语法报错

内容的提问来源于stack exchange,提问作者Alpay Toprak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 20:15:03