我有一个本地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英语):
update RemoteTable
set RemoteTable.email = LocalTable.email
where RemoteTable.accountNum = LocalTable.accountNum
and LocalTable.status = 'a'
and RemoteTable.status = 'a'
我该怎么做?提前谢谢。
如果MySQL没有四个部分名称,并且SQL Server不接受没有一个部分的引用,则可以尝试serverName.databaseName.tableName。将架构名称留空意味着默认架构。然而,根据这个问题,这可能不适用于所有版本的SQL Server、MySQL和ODBC驱动程序。
这里还有一个问题提供了多种解决问题的方法:我必须使用OpenQuery从SQL Server查询MySQL链接服务器吗?