Sql server 为什么我的SQL UPDATE语法给出了';列名称不明确';?
我正在使用SQL Server 2014,正在运行以下更新查询:Sql server 为什么我的SQL UPDATE语法给出了';列名称不明确';?,sql-server,sql-update,ambiguous,Sql Server,Sql Update,Ambiguous,我正在使用SQL Server 2014,正在运行以下更新查询: UPDATE ReservationStay SET ReasonForstayCode = b.ReasonForStayCode FROM MissingReasonForStay b WHERE ReservationStayID = b.ReservationStayID 查询的目的是使用“MissingReasonForStay”表中的数据更新“ReservationStay”表中名为“ReasonForSta
UPDATE ReservationStay
SET ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
WHERE ReservationStayID = b.ReservationStayID
查询的目的是使用“MissingReasonForStay”表中的数据更新“ReservationStay”表中名为“ReasonForStayCode”的列。需要使用两个表的“ReservationStayID”列进行查找
问题是SSMS在我的代码第4行的ReservationStayID下面加了下划线,当我运行查询时,我得到一条消息:不明确的列名“ReservationStayID”
我的代码有什么问题吗?你能试试这个吗:
UPDATE ReservationStay
SET ReasonForstayCode = b.ReasonForStayCode
FROM ReservationStay a
INNER JOIN MissingReasonForStay b
ON a.ReservationStayID = b.ReservationStayID;
这是因为
WHERE
子句中的ReservationStayID
是不合格的,SQL Server无法确定该列属于哪个表
试试这个
UPDATE a
SET ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
INNER JOIN ReservationStay a
ON a.ReservationStayID = b.ReservationStayID
我知道这是一个老问题,但我想我会发布解决方案,因为我在这里没有看到它。在update语句中,您几乎做到了这一点,并且纠正了无法为表名添加别名的问题,因此解决方案是只使用整个表名,而使用别名只是为了缩短时间,以便在编写查询时不必使用整个表名
UPDATE ReservationStay
SET ReservationStay.ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
WHERE ReservationStay.ReservationStayID = b.ReservationStayID
我相信这应该可以工作,而不必更改两个表中的列名。它不知道是哪一个。你定义了b。为什么不定义一个呢?我定义了。但它会给我“集合附近的语法不正确”。从RS a到RS b的更新。。。。?对不起,SQL Server不是我的方言,谢谢。我执行了你的代码,得到了这个错误消息:msg8152,16级,13状态,第4行字符串或二进制数据将被截断。该语句已终止。如果这是正确的,那么sql server对我来说比我意识到的还要陌生。您能检查这两个表的
ReasonForStayCode
列的类型吗?我想第一个比较小。@gotqn我想你是对的。我的'MissingReasonForStay'表的'ReasonForStayCode'列中的字符长度有问题!我会纠正这一点,然后再给你回复。谢谢