我有2张桌子:
>表1 =加油站名称(成对)
>表2 =有协调信息(经度和纬度等)
表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
我想用表A中的坐标信息更新此表.我按照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)