如何在SQL Server 2000中更新需要"别名"的链接服务器表?

Mar*_*urd 2 sql sql-server-2000 sql-update

在SQL Server 2005中,tablename可用于区分您所指的表:

UPDATE LinkedServer.database.user.tablename
SET val=u.val
FROM localtable u
WHERE tablename.ID=u.ID
Run Code Online (Sandbox Code Playgroud)

在SQL Server 2000中,这会导致

服务器:消息107,级别16,状态2
列前缀"tablename"与查询中使用的表名或别名不匹配.

UPDATE LinkedServer.database.user.tablename
SET val=u.val
FROM localtable u
WHERE LinkedServer.database.user.tablename.ID=u.ID
Run Code Online (Sandbox Code Playgroud)

结果是

服务器:消息117,级别15,状态2
数字名称"LinkedServer.database.user.tablename"包含的内容超过最大前缀数.最大值为3.

而且当然,

UPDATE LinkedServer.database.user.tablename
SET val=u.val
FROM localtable u
WHERE ID=u.ID
Run Code Online (Sandbox Code Playgroud)

结果是

服务器:消息209,级别16,状态1
不明确的列名称"ID".

(实际上搜索"数字名称包含的内容超过最大数量.最大数量为3."我找到了答案,但我已经输入了这个问题,我将发布它!:-))

Ada*_*Dev 6

怎么样:

UPDATE ls
SET ls.val=u.val
FROM LinkedServer.database.user.tablename ls
    JOIN localtable u ON ls.ID = u.ID
Run Code Online (Sandbox Code Playgroud)