Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从本地SQL Server表更新链接表列_Sql Server_Tsql_Updates_Linked Server - Fatal编程技术网

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

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'; 我想做的是,对于

我有一个本地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表中提取一个电子邮件地址(例如单个记录):

所以在英语中:对于
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'