Den*_*enn 1 sql-server db2 join linked-server sql-update
我在 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)
如果ItemID
和Barcode
存在于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
小智 5
这是旧帖子,但现在我处理它。
不要在 OPENQUERY 中使用 join
例如类似的东西
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8510 次 |
最近记录: |