Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法更新DB2表_Sql_Db2_Db2 Luw - Fatal编程技术网

Sql 无法更新DB2表

Sql 无法更新DB2表,sql,db2,db2-luw,Sql,Db2,Db2 Luw,您能帮我更新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 ); 正在尝

您能帮我更新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),并获得以下错误消息:
[Code:-206,SQL State:42703]db2sql错误:SQLCODE=-206,SQLSTATE=42703,SQLERRMC=GT.ITEM\u 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命令,如果distinct不能解决gd_temp表中单个sn_n值有多行的问题,则必须在子查询中添加更多筛选器

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)

谢谢你的回复,但在执行过程中,我遇到了另一个错误。你能帮我吗。[Code:-811,SQL State:21000]DB2 SQL错误:SQLCODE=-811,SQLSTATE=21000,SQLERRMC=null。发生这种情况是因为子查询返回多行。您可以使用
仅获取前1行
来修复错误,但这可能只是一个解决方法。Thxs用于回复。执行getting below错误消息时。你能帮助我吗。Error Msg:db2sql Error:SQLCODE=-134,SQLSTATE=42907,SQLERRMC=ITEM_-ICan您能为这两个表提供一个ddl和示例数据吗?此错误与字符串“导致CLOB、DBCLOB、BLOB、LONG VARCHAR或LONG VARGRAPHIC数据类型的表达式不允许出现在:SELECT DISTINCT语句、group by…”有关。您必须添加额外的过滤器,以便每个gt只有一行。SNU\n我忘记解释原因了。您必须添加额外的筛选器,以便每个gt.sn\n只有一行,而不使用“选择不同”或“分组依据”