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

SQL Server UPDATE查询语法报错(Msg 102)问题排查

问题分析与解决方案

这个语法错误的核心原因是SQL Server不支持在UPDATE关键字后的表名直接跟别名(也就是你写的UPDATE D_date a里的a不符合SQL Server的语法规范)。

在SQL Server中,如果你想给更新的表起别名,必须在FROM子句中定义这个别名,然后通过UPDATE引用该别名,或者直接更新原表名同时在FROM里关联别名表。

修正后的两种写法:

写法1:更新原表名,在FROM中关联别名表

UPDATE D_date
SET d_date_key = b.d_date_key,
    full_date = b.full_date,
    day_of_week = b.day_of_week,
    day_of_week_display = b.day_of_week_display,
    fiscal_day_number = b.fiscal_day_number
FROM D_date a
JOIN dbo.[2017 Calendar update] b 
  ON a.d_date_key = b.d_date_key;

写法2:直接更新已定义的别名(推荐,更清晰)

UPDATE a
SET d_date_key = b.d_date_key,
    full_date = b.full_date,
    day_of_week = b.day_of_week,
    day_of_week_display = b.day_of_week_display,
    fiscal_day_number = b.fiscal_day_number
FROM D_date a
JOIN dbo.[2017 Calendar update] b 
  ON a.d_date_key = b.d_date_key;

额外说明:

  • 这里用JOIN替代原查询中的WHERE关联,是更符合SQL标准的写法,可读性和性能都更优。
  • 你的原查询写法更接近MySQL的UPDATE ... SET ... FROM ...语法,但SQL Server有自己的语法规则,别名的定义位置是关键差异点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:28:28