我在本地sql server实例上运行存储过程。
SQL服务器实例链接到我们的i系列上的DB2实例。
我有一个结果集,它是使用连接到本地表的OPENQUERY语句生成的。它只是一个ID列表。
我现在如何使用OPENQUERY使用
运行更新 WHERE id IN (idListFromPreviousQuery)
类型声明。
理想情况下,我正在寻找基于集合的解决方案,而不是基于光标/循环,我真的无法理解如何解决这个问题。
答案 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);