Sql server 如何从本地SQL Server表更新链接表列
我有一个本地SQL Server表和一个远程链接的MySQL表 我需要从本地表中提取电子邮件地址以更新远程表 此T-SQL语句适用于单个更新:Sql server 如何从本地SQL Server表更新链接表列,sql-server,tsql,updates,linked-server,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'; 我想做的是,对于
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表中提取一个电子邮件地址(例如单个记录):
所以在英语中:对于RemoteTable
中的每个活动记录(可以是倍数),在LocalTable
中查找相同帐号的对应记录(每个帐号一条记录),并从中提取电子邮件地址以填充RemoteTable
中的匹配记录。如果简化了,则可以使用LocalTable
作为驱动程序,如下所示(准SQL英语):
我该怎么做?提前感谢。如果MySQL没有四部分名称,而SQL Server不接受没有四部分名称的引用,您可以尝试serverName.databaseName..tableName。将架构名称保留为空意味着默认架构。但是,根据,这可能不适用于所有版本的SQL Server、MySQL和ODBC驱动程序
这里还有一个问题提供了多种解决问题的方法:在4部分名称上使用join进行更新我已经看到了4部分名称,但始终无法确定第四部分是什么。我得到了SKYCOMLINK2.tng.user\u列表。。。哪一个链接是server.database.table,但第四个链接是什么?它是所有者,默认情况下是dbo。dbo的顺序在哪里?我在SSMS中右键单击该表,然后选择“创建”,它将显示给您。您的“其他人找到了解决方案”链接不起作用我的道歉-您是对的。但是,搜索它时发现了另一个堆栈溢出问题,该问题既有OpenQuery语法,也有使用四部分名称中的默认标识符的语法(linkedServer…yourTable)。你可以在找到它。这也是我问的一个问题,它也没有答案。
select email
from LocalTable
where id = 12345
update RemoteTable
set RemoteTable.email = LocalTable.email
where RemoteTable.accountNum = LocalTable.accountNum
and LocalTable.status = 'a'
and RemoteTable.status = 'a'