我有 2 张 table :
- 表1=加油站名称(成对)
- Table2 = 具有坐标信息(经度和纬度等)
表1示例:
StationID1 StationID2 Name1 Name2 Lattitude1 Longitude1 Lattitude2 Longitude2 Distance
------------------------------------------------------------------------------------------------
93353477 52452 FOO BAR NULL NULL NULL NULL NULL
93353527 52452 HENRY BENNY NULL NULL NULL NULL NULL
93353551 52452 GALE SAM NULL NULL NULL NULL NULL
表2示例:
IDInfo Name Lattitude Longitude
-------------------------------------------
93353477 BAR 37.929654 -87.029622
我想使用 tableA
中的坐标信息更新此表。我尝试按照 SQL Server 2005: The multi-part identifier … could not be bound 执行以下操作
update table1
set t1.[Lattitude1] = t2.[Lattitude]
from table1 t1
left join table2 t2
on (t1.StationID1 = t2.IDInfo)
我收到以下错误消息:
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "t1.Lattitude1" could not be bound.
但是,如果我执行以下操作,它就会起作用,然后我可以将其存储到另一个表中。
SELECT t1.[StationID1]
,t1.[StationID2]
,t1.[Name1]
,t1.[Name2]
,t2.[Lattitude] AS [Lattitude1]
,t2.[Longitude] AS [Longitude1]
,t3.[Lattitude] AS [Lattitude2]
,t3.[Longitude] AS [Longitude2]
from table1 t1
left join table2 t2
on (t1.StationID1 = t2.IDInfo)
left join table2 t3
on (t1.StationID2 = t2.IDInfo)
我对 SQL 非常陌生,很难理解为什么有些功能有效而其他功能无效。根据我上面发布的链接,我的初始查询应该有效 - 不是吗?也许我没有思考清楚,因为我花了很多时间尝试这个,我终于得到了同事的帮助(她建议了我上面提到的方法)。
最佳答案
我认为您可以修改 UPDATE 语句以引用 UPDATE 行中的表别名。
update t1
set t1.[Lattitude1] = t2.[Lattitude]
from table1 t1
left join table2 t2
on (t1.StationID1 = t2.IDInfo)
关于sql 更新表集 - 无法绑定(bind)多部分标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14741859/