有关如何更新包含数百万条记录的表的选项

时间:2017-11-01 11:01:34

标签: teradata

我有一种情况,其中一个表添加了一个新列。我必须通过连接另一个表来更新此表以填充此新列。

我正在尝试使用以下内容,但我不确定如何表现。

UPDATE A  
FROM MPTR.ACCS_METH_EVENT A, 
(
SELECT EVENT_ID,DATA_SOURCE_TYPE_CD FROM 
MPTR.EVENT
WHERE DATA_SOURCE_TYPE_CD IS NOT NULL
AND EVENT_START_DT<DATE+1
GROUP BY 1,2 
) B
SET  DATA_SOURCE_TYPE_CD=B.DATA_SOURCE_TYPE_CD
WHERE A.EVENT_ID=B.EVENT_ID
AND A.DATA_SOURCE_TYPE_CD IS NULL ; 

事件表在event_start_dt上创建了分区。

这种情况下最好的方法是什么?

我尝试了类似的东西,但由于TDWM过滤器违规错误即将发生,它失败了。我在这里使用了分区列,但仍然收到错误。

MERGE MPTR.ACCS_METH_EVENT as Target1
USING MPTR.EVENT  as source1
ON Target1.EVENT_ID = source1.EVENT_ID   and source1.event_start_dt< date
WHEN MATCHED 
THEN   
 UPDATE SET DATA_SOURCE_TYPE_CD=source1.DATA_SOURCE_TYPE_CD

0 个答案:

没有答案