如何从本地SQL Server表更新链接表列

时间:2015-06-26 18:03:56

标签: sql-server tsql updates linked-server

我有一个本地SQL Server表和一个远程链接的MySQL表。

我需要从本地表中提取电子邮件地址以更新遥控器。

此T-SQL语句适用于单个更新:

UPDATE openquery(SKYCOMLINK2, 'select tng_id, tng_account, tng_email from user_list where tng_account = 12345 and tng_status = ''A''') 
SET tng_email = 'blah@blah.com';

我想要做的是,对于状态为“A”的每条RemoteTable条记录,我想从本地SQL Server表中提取电子邮件地址(单个记录的示例):

select email 
from LocalTable 
where id = 12345

所以在英语中:对于RemoteTable中的每个活动记录(可能是倍数),在相同帐号的LocalTable中查找相应的记录(每个帐号一个记录)并拉出电子邮件地址从中填充RemoteTable中的匹配记录。如果它更容易,LocalTable可以是下面的驱动程序(在准SQL-English中):

update RemoteTable 
set RemoteTable.email = LocalTable.email 
where RemoteTable.accountNum = LocalTable.accountNum 
  and LocalTable.status = 'a' 
  and RemoteTable.status = 'a'

我该怎么做?提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果MySQL没有四个部件名称且SQL Server不接受没有的部件名称,您可以尝试使用serverName.databaseName..tableName。将架构名称留空意味着默认架构。但是,根据this question,这可能不适用于所有版本的SQL Server,MySQL和ODBC驱动程序。

以下是提供解决问题的多种方法的另一个问题:Do I have to use OpenQuery to query a MySQL Linked Server from SQL Server?