繁体   English   中英

无法更新DB2表

[英]unable to update DB2 table

您能帮我更新DB2表吗?有没有更好的方法来更新这个大表? Adv thxs。

UPDATE RT.ITEM  IM SET 
IM.ITEMNAME = GT.ITEM_D, IM.ITEMSIZE = GT.SIZE, IM.COLOR = GT.COL,
IM.ITEMINFO = GT.ITEM_I WHERE IM.RET = 14 AND IM.LAN = 10 and
  IM.ITEMK IN ( SELECT GT.SN_N FROM GD.G_TEMP GT );  

尝试从另一个架构表(GD.G_TEMP)更新表(RT.ITEM)并获得以下错误消息:[代码:-206,SQL状态:42703] DB2 SQL错误:SQLCODE = -206,SQLSTATE = 42703,SQLERRMC = GT.ITEM_D

您的代码无效。 DB2不支持UPDATE显式JOIN 但是,您可以使用相关子查询来执行所需的操作:

UPDATE RT.ITEM IM
    SET (ITEMNAME, ITEMSIZE, COLOR, ITEMINFO) = 
         (SELECT GT.ITEM_D, GT.SIZE, GT.COL, GT.ITEM_I
          FROM GD.G_TEMP GT
          WHERE GT.SN_N = IM.ITEMK
          FETCH FIRST 1 ROW ONLY
         )
    WHERE IM.RET = 14 AND IM.LAN = 10 AND
          EXISTS (SELECT 1
                  FROM GD.G_TEMP GT
                  WHERE GT.SN_N = IM.ITEMK
                 );

嗨,您可以尝试使用merge命令,如果在单独的sn_n值的多行gd_temp表中不能解决不同的问题,则必须在子查询中添加更多过滤器。

MERGE INTO RT.ITEM IM
USING
  (SELECT DISTINCT
     GT.ITEM_D,
     GT.SIZE,
     GT.COL,
     GT.ITEM_I
   FROM GD.G_TEMP gt

  ) gt  on gt.sn_n=im.itemk AND IM.RET = 14 AND IM.LAN = 10
WHEN MATCHED THEN UPDATE
SET (im.ITEMNAME, im.ITEMSIZE, im.COLOR, im.ITEMINFO) = (GT.ITEM_D, GT.SIZE, GT.COL, GT.ITEM_I)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM