作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 SQL Server 2008 R2 表中有几行
ConfirmTable (ItemID, Barcode)
DB2 头文件中的更多行
O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
和详细文件
O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
如果 ConfirmTable
中存在 ItemID
和 Barcode
,我想将 O1 和 O2 文件中的 DELIVERED 状态更新为“YES”。我正在尝试使用以下查询,但似乎显示以下错误。
OLE DB provider "DB2OLEDB" for linked server "LINK_DB" returned message "Insufficient key column information for updating or refreshing."
代码:
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
最佳答案
这是一个旧帖子,但我现在必须处理它。
不要在 OPENQUERY 中使用连接。
相反,例如,做这样的事情:
UPDATE OQ
SET OQ.Delivered='YES'
FROM OPENQUERY(LINK_DB, 'SELECT * FROM XXXXR.HLIB.O1') OQ
JOIN OPENQUERY(LINK_DB, 'SELECT * FROM XXXXR.HLIB.O2') QQ2 ON QQ.ItemID = QQ2.ItemID
INNER JOIN ConfirmTable CT ON CT.Barcode = OQ.Barcode
WHERE QQ2.Qty > 0
关于sql-server - 如何在OPENQUERY中使用update和join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188654/
我是一名优秀的程序员,十分优秀!