为什么我的SQL UPDATE语法给出了“模糊的列名”?

问题描述 投票:0回答:3

我正在使用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'

我的代码出了什么问题?

sql-server sql-update ambiguous
3个回答
5
投票

这是因为ReservationStayID子句中的WHERE不合格,SQL Server无法确定该列属于哪个表。

试试这个

UPDATE a
SET ReasonForstayCode = b.ReasonForStayCode
FROM MissingReasonForStay b
INNER JOIN ReservationStay a
ON a.ReservationStayID = b.ReservationStayID

2
投票

你能试一试吗:

UPDATE ReservationStay 
SET ReasonForstayCode = b.ReasonForStayCode
FROM ReservationStay a
INNER JOIN MissingReasonForStay b
    ON a.ReservationStayID = b.ReservationStayID;

0
投票

我知道这是一个老问题,但我想我会发布解决方案,因为我在这里看不到它。你几乎在那里并且正确无法在update语句中对表名进行别名,因此解决方案是只使用整个表名,使用别名只是为了缩短事情,所以你不必使用整个无论如何写表单时的表名。

    UPDATE ReservationStay 
    SET ReservationStay.ReasonForstayCode = b.ReasonForStayCode
    FROM MissingReasonForStay b
    WHERE ReservationStay.ReservationStayID = b.ReservationStayID

我相信这应该工作,而无需在任何一个表中更改列名。

© www.soinside.com 2019 - 2024. All rights reserved.