Join 使用连接查询进行DB2更新
我正在使用DB2执行以下更新操作Join 使用连接查询进行DB2更新,join,db2,Join,Db2,我正在使用DB2执行以下更新操作 update DATA set B_DESC=P_DESC, P_DESC=null where B_DESC= *, P_DESC=* (Select B_DESC,P_DESC from C_DATA) 下面的方法实际上是可行的,但由于子查询中涉及复杂的联接,因此不建议使用下面的方法 update DATA set B_DESC=P_DESC, P_DESC=null where B_DESC= (Select B_DESC from C_DATA),
update DATA set B_DESC=P_DESC, P_DESC=null
where B_DESC= *, P_DESC=*
(Select B_DESC,P_DESC from C_DATA)
下面的方法实际上是可行的,但由于子查询中涉及复杂的联接,因此不建议使用下面的方法
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)
我必须更新数据表,但是B_DESC和p_DESC我必须从C_数据表中获取它,并在更新查询中使用它
请告诉我怎么做。如果可能,它必须是单个查询
提前感谢。您的第一个查询是否无效?我不熟悉用逗号分隔的
WHERE
子句(它在我的DB2版本中无效-它实际上是语法的一部分吗?)
通常,当我需要运行这些类型的更新查询时,我会使用EXISTS
子句,如下所示:
UPDATE data as a SET b_desc = p_desc, p_desc = null
WHERE EXISTS (SELECT '1'
FROM c_data as b
WHERE b.b_desc = a.b_desc
AND b.p_desc = a.p_desc)
使用合并查询来更新表,而不是联接。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;
@X-Zero
我不认为,WHERE
子句中需要和b.p_desc=a.p_desc
,这可能会限制许多更新@rozar
你说什么?@RajaReddy-他(我认为是)有一个和
从句,所以我选择了这个从句。