我正在使用SQL Server 2014,我正在运行以下UPDATE查询:
UPDATE ReservationStay
SET ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
WHERE ReservationStayID = b.ReservationStayID
查询的目的是使用来自'MissingReasonForStay'表的数据更新'ReservationStay'表中名为'ReasonForStayCode'的列。查找需要使用两个表的'ReservationStayID'列完成。
问题是SSMS在我的代码的第4行强调ReservationStayID,当我运行查询时,我收到消息:不明确的列名'ReservationStayID'
我的代码出了什么问题?
这是因为ReservationStayID
子句中的WHERE
不合格,SQL Server无法确定该列属于哪个表。
试试这个
UPDATE a
SET ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
INNER JOIN ReservationStay a
ON a.ReservationStayID = b.ReservationStayID
你能试一试吗:
UPDATE ReservationStay
SET ReasonForstayCode = b.ReasonForStayCode
FROM ReservationStay a
INNER JOIN MissingReasonForStay b
ON a.ReservationStayID = b.ReservationStayID;
我知道这是一个老问题,但我想我会发布解决方案,因为我在这里看不到它。你几乎在那里并且正确无法在update语句中对表名进行别名,因此解决方案是只使用整个表名,使用别名只是为了缩短事情,所以你不必使用整个无论如何写表单时的表名。
UPDATE ReservationStay
SET ReservationStay.ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
WHERE ReservationStay.ReservationStayID = b.ReservationStayID
我相信这应该工作,而无需在任何一个表中更改列名。