带有连接查询的DB2 Update

roz*_*zar 2 db2 join

我正在使用DB2执行以下更新操作.

update DATA set B_DESC=P_DESC, P_DESC=null
where B_DESC= *, P_DESC=*
(Select B_DESC,P_DESC from C_DATA) 
Run Code Online (Sandbox Code Playgroud)

下面实际上是可能的,但由于复杂的连接涉及该子查询,因此不建议使用如下所示

update DATA set B_DESC=P_DESC, P_DESC=null
where B_DESC= (Select B_DESC from C_DATA), P_DESC=(Select P_DESC from C_DATA)
Run Code Online (Sandbox Code Playgroud)

我必须更新DATA表,但是B_DESC和P_DESC我必须从C_DATA表中获取它并在UPDATE查询中使用它.

请让我知道怎么做.如果可能,它必须是单个查询.

提前致谢.

小智 6

使用合并查询来更新表,而不是连接.DB2不接受为此目的加入更新查询,您必须使用合并:

MERGE INTO TABLE_NAME1 A 
    USING (SELECT  COL1, COL2  FROM TABLE_NAME2) B
    ON A.COL1 = B.COL2
    WHEN MATCHED AND A.COL1 = B.COL2
    THEN UPDATE SET A.COL1 = B.COL2;
Run Code Online (Sandbox Code Playgroud)