sql 更新表集 - 无法绑定(bind)多部分标识符

标签 sql sql-server sql-update

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

相关文章:

sql - 在我的 sql 查询中使用相交运算符的替代方法

MySQL any 关键字用法

显示包含列表中所有值的分组行的 SQL 查询

sql - 插入执行格式 Postgresql 字符串

带连接的 SQL 更新?

sql - 如何动态选择表中空闲的列?

sql-server - 无法在数据库中执行此指令 GRANT EXEC sp_configure 给用户

sql-server - SQL : Conditionally select column based on aggregate value

sql-server - 在单个 select 语句中聚合数据,无需连接和透视

sql - PL/pgSQL 函数在 pgAdmin 之外无法正确运行