小编Den*_*enn的帖子

如何在 OPENQUERY 中使用更新和加入

我在 SQL Server 2008 R2 表中有几行

ConfirmTable (ItemID, Barcode)
Run Code Online (Sandbox Code Playgroud)

以及 DB2 头文件中的更多行

O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
Run Code Online (Sandbox Code Playgroud)

和详细文件

O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
Run Code Online (Sandbox Code Playgroud)

如果ItemIDBarcode存在于ConfirmTable. 我正在尝试使用以下查询,但似乎显示以下错误。

链接服务器“LINK_DB”的 OLE DB 提供程序“DB2OLEDB”返回消息“更新或刷新的键列信息不足。”

代码:

UPDATE OQ 
SET OQ.Delivered='YES'
FROM OPENQUERY(LINK_DB, 'SELECT * 
                         FROM XXXXR.HLIB.O1 O1O 
                         LEFT JOIN XXXXR.HLIB.O2 O2O ON O1O.ItemID = O2O.ItemID 
                         WHERE O1O.Qty > 0') OQ 
INNER JOIN 
    ConfirmTable CT ON CT.Barcode = OQ.Barcode
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下更新格式,但它对我不起作用。

http://www.experts-exchange.com/questions/28390846/OPENQUERY-in-sql-server-linked-server.html

sql-server db2 join linked-server sql-update

1
推荐指数
1
解决办法
8510
查看次数

标签 统计

db2 ×1

join ×1

linked-server ×1

sql-server ×1

sql-update ×1