sql update table set - 无法绑定多部分标识符

cod*_*nob 7 sql sql-server sql-update

我有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
Run Code Online (Sandbox Code Playgroud)

2的示例:

IDInfo     Name  Lattitude    Longitude
-------------------------------------------
93353477   BAR   37.929654    -87.029622
Run Code Online (Sandbox Code Playgroud)

我想用驻留的坐标信息更新此表tableA.我尝试按照SQL Server 2005执行以下操作:无法绑定多部分标识符....

update table1
set t1.[Lattitude1] = t2.[Lattitude]
from table1 t1
left join table2 t2 
on (t1.StationID1 = t2.IDInfo)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

消息4104,级别16,状态1,行1
无法绑定多部分标识符"t1.Lattitude1".

但是,如果我执行以下操作,则可以将其存储到另一个表中.

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)
Run Code Online (Sandbox Code Playgroud)

我是SQL的新手,很难理解为什么有些东西有效,有些则没有.基于我在上面发布的链接,我的初始查询应该有效 - 不是吗?也许我没有直接思考,因为我花了很多时间尝试这个,我终于得到了同事的帮助(她提出了我上面提到的方法).

bob*_*obs 14

我认为您可以修改UPDATE语句以引用UPDATE行中的表别名.

update t1
set t1.[Lattitude1] = t2.[Lattitude]
from table1 t1
left join table2 t2 
on (t1.StationID1 = t2.IDInfo)
Run Code Online (Sandbox Code Playgroud)