gpt4 book ai didi

sql-server - 如何在OPENQUERY中使用update和join

转载 作者:行者123 更新时间:2023-12-05 01:47:01 31 4
gpt4 key购买 nike

我在 SQL Server 2008 R2 表中有几行

ConfirmTable (ItemID, Barcode)

DB2 头文件中的更多行

O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)

和详细文件

O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)

如果 ConfirmTable 中存在 ItemIDBarcode,我想将 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com