如何从本地结果集更新链接服务器查询中的表?

时间:2017-10-08 10:50:53

标签: sql-server tsql db2 linked-server db2-400

我在本地sql server实例上运行存储过程。

SQL服务器实例链接到我们的i系列上的DB2实例。

我有一个结果集,它是使用连接到本地表的OPENQUERY语句生成的。它只是一个ID列表。

我现在如何使用OPENQUERY使用

运行更新
    WHERE id IN (idListFromPreviousQuery)

类型声明。

理想情况下,我正在寻找基于集合的解决方案,而不是基于光标/循环,我真的无法理解如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以使用WITH或temp_table:

SELECT id
INTO #temptable
FROM ...;

UPDATE linked_server.db_name.schema_name.table_name
SET col_name = ...
WHERE id IN (SELECT id FROM #temptable);

或:

WITH cte(id) AS (
 SELECT id
 FROM ...
)
UPDATE linked_server.db_name.schema_name.table_name
SET col_name = ...
WHERE id IN (SELECT id FROM cte);

修改

WITH cte(id) AS (
     SELECT id
     FROM ...
    )
UPDATE oq 
SET    col_name = ...
FROM   OPENQUERY([LINKEDSERVER],    'select ... from ...') oq 
WHERE oq.id IN (SELECT id FROM cte);