UPDATE来自相同MySQL链接服务器表Where子句的本地MSSQL表

时间:2014-05-05 19:11:59

标签: mysql sql-server linked-server openquery

我有两张名为雇主的牌桌。一个表驻留在MSSQL上,另一个表驻留在MySQL上。 MySQL DB已链接。

我尝试使用MySQL DB中数据不同的数据更新MSSQL DB表中的所有行。

理想情况下,因为有这么多行,我宁愿只更新具有不同数据的行。

每个数据库表有2个列的idemployees和employeescol1。

下面是一个脚本的工作示例,它将更新Linked MySQL DB中的所有行:

UPDATE MSSQLDB.dbo.employer
SET employeescol1 = emp2.employeescol1  
FROM OPENQUERY(LinkedServer, 'SELECT * FROM employees') as emp2  
WHERE
   MSSQLDB.dbo.employer.idemployees = emp2.idemployee

如何添加WHERE子句来表示WHERE employeescol> =(插入变量)???

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效。你也可以使用同义词,如果....有点多:

;with cte
as
(SELECT
    *
from
   OPENQUERY(LinkedServer, 'SELECT * FROM employees')
)
UPDATE MSSQLDB.dbo.employer
SET 
    employer.employeescol1 = cte.employeescol1  
FROM
    MSSQLDB.dbo.employer 
inner join
    cte
on
    cte.idemployees = employer.idemployee