2015-06-26 35 views
0

我有一個本地SQL Server表和一個遠程鏈接MySQL表。如何從本地SQL Server表更新鏈接表列

我需要從本地表中拉電子郵件地址來更新遠程。

這件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 = '[email protected]'; 

我想要做的是,爲每一位RemoteTable紀錄的「A」狀態,我想從一個拉一個電子郵件地址本地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' 

我怎麼能這樣做?提前致謝。

+0

做一個更新與4點部分組成的名稱 – Paparazzi

+0

加入我見過的第4點部分的名稱,但永遠無法弄清楚第四部分是什麼。我得到遠達SKYCOMLINK2.tng.user_list ...這是鏈接server.database.table但是第四個是什麼? –

+0

它是店主,默認是dbo – Paparazzi

回答

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?

+0

你的「別人找到解決方案」鏈接不起作用 –

+0

我的歉意 - 你是對的。然而,搜索它後,出現了另一個Stack Overflow問題,該問題既包含OpenQuery語法,也包含使用四部分名稱(linkedServer ... yourTable)中的默認標識符的另一種語法。你可以在http://stackoverflow.com/questions/8187234/do-i-have-to-use-openquery-to-query-a-mysql-linked-server-from-sql-server找到它。 – SQLEmil

+0

這也是我問的問題,也沒有答案。 –