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

使用CASE表达式更新SQL多行多列时语法报错,求解决方案

问题解决:SQL多行多列更新语法错误

错误原因

你生成的SQL语句重复使用了SET关键字,这违反了UPDATE语法规范。UPDATE语句中SET只能出现一次,多个列的更新需用逗号分隔。

正确的SQL语句

UPDATE ORDERS_BACKUP 
SET MemberID = CASE OrderID 
                   WHEN '80087' THEN '5429' 
                   WHEN '80091' THEN '5429' 
               END,
    CustomerID = CASE OrderID 
                     WHEN '80087' THEN '2050' 
                     WHEN '80091' THEN '2050' 
                 END
WHERE OrderID IN ('80087', '80091') 

修正后的VBA代码

把第二个SET替换为逗号,同时去掉多余的分号:

sSQLOrderUpdate = "UPDATE ORDERS_BACKUP " &_
"SET MemberID = CASE OrderID " &_
"WHEN '" & iOrderID_1 & "' THEN '" & iMemberID & "' " &_
"WHEN '" & iOrderID_2 & "' THEN '" & iMemberID & "' " &_
"END, " &_
"CustomerID = CASE OrderID " &_
"WHEN '" & iOrderID_1 & "' THEN '" & iCustomerID & "' " &_
"WHEN '" & iOrderID_2 & "' THEN '" & iCustomerID & "' " &_
"END " &_
"WHERE OrderID IN ('" & iOrderID_1 & "','" & iOrderID_2 & "') "

额外提示

当前直接拼接字符串的写法存在SQL注入风险,建议使用参数化查询(比如通过ADODB.Command对象传递参数),既能提升安全性,也能避免因变量格式问题引发的语法错误。

内容的提问来源于stack exchange,提问作者Bjorgen Eatinger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:23:12