我在SQL Server 2008 R2表中有几行
ConfirmTable (ItemID, Barcode)
和DB2头文件中的更多行
O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
和详细信息文件
O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
如果ItemID
和Barcode
存在于ConfirmTable
中,我想将O1和O2文件中的“已交付”状态更新为“是”。我正在尝试使用以下查询,但似乎显示以下错误。
链接服务器“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
我也尝试了以下更新格式,但它仍然不适合我。
http://www.experts-exchange.com/questions/28390846/OPENQUERY-in-sql-server-linked-server.html
1条答案
按热度按时间cxfofazt1#
这是一个老职位,但我不得不处理它现在。
不要在OPENQUERY中使用联接。
相反,例如,执行以下操作: