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

基于临时表#tempGd更新revision表日期列的SQL语句报错求助

问题分析与解决方案

原SQL执行失败的核心原因:SET date = ('2023-06-03', '2023-06-03','2024-06-03')的写法不符合SQL赋值逻辑,数据库无法将多个日期值分别对应到不同的revisionid记录上。


解决方案1:通过CASE WHEN直接匹配赋值

无需修改临时表,直接在UPDATE语句中根据revisionid匹配对应的日期:

UPDATE revision
SET date = CASE revisionid
    WHEN 22 THEN '2023-06-03'
    WHEN 39 THEN '2023-06-03'
    WHEN 3 THEN '2024-06-03'
END
WHERE revisionid IN (SELECT revisionid FROM #tempGD);

解决方案2:给临时表添加日期列后关联更新

如果后续需要重复使用日期与revisionid的对应关系,可以先给临时表补充日期字段,再关联更新:

  1. 给临时表添加日期列:
ALTER TABLE #tempGd ADD target_date DATE;
  1. 给临时表每条记录设置对应日期:
UPDATE #tempGd 
SET target_date = CASE revisionid
    WHEN 22 THEN '2023-06-03'
    WHEN 39 THEN '2023-06-03'
    WHEN 3 THEN '2024-06-03'
END;
  1. 关联临时表更新revision表:
UPDATE r
SET r.date = t.target_date
FROM revision r
INNER JOIN #tempGd t ON r.revisionid = t.revisionid;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:54:26