SQL更新表组 - 的多部分标识符无法绑定(sql update table set - The m

2019-07-19 11:28发布

我有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

我想更新此表驻留在坐标信息tableA 。 我试着做以下按的SQL Server 2005:多部分标识符......无法绑定

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

我收到以下错误信息:

消息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)

我很新的SQL和我有困难的时候理解为什么一些工作的事情和别人不一样。 根据我上面我的初始查询发布应该有工作的链接 - 不是吗? 也许是我没有想到直,因为我花了很多时间在尝试此,我终于得到了一个同事的帮助(她提议的做法我上面提到)。

Answer 1:

我想你可以修改你的UPDATE语句引用表的别名在UPDATE线。

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


Answer 2:

您需要更改内部表,并给予不同的allias以类似于列。 这应该工作。

update table1
set [Lattitude1] = x.[lat]
from 
(
    SELECT IDInfo [id], Lattitude [lat] FROM 
    table2
) x
WHERE
StationID1 = x.[id]

在您的特定情况下,它没有必要重新命名Lattitude为纬度,但如果你最终更新与自己的表,并强迫自己入给列不同的名称,这将节省你头痛的道路。



文章来源: sql update table set - The multi-part identifier could not be bound