【发布时间】:2014-06-16 17:54:07
【问题描述】:
我正在将数据加载到“暂存”数据库模式中的一对父子表中。如果以前在“主”数据库架构中的父子表对中加载了重复记录,我想将它们从“暂存”数据库表中删除。
这个查询
SELECT A.*,B.*
FROM STG.AUTO_REPR_PAR_STG A
JOIN STG.AUTO_REPR_CHLD_STG B
ON A.TEST_SEQ_NUM=B.TEST_SEQ_NUM
WHERE EXISTS ( SELECT A.*, B.*
FROM MST.AUTO_REPR_PAR A
JOIN MST.AUTO_REPR_CHLD B
ON A.TEST_SEQ_NUM=B.TEST_SEQ_NUM
)
将显示之前在 master 中加载的 staging 中的内容。但是如何从暂存数据库中的父子表对中删除?我正在画一个“空白”....我试过了,但它爆炸了(“FROM 子句中不允许使用表”):
DELETE FROM STG.AUTO_REPR_PAR_STG A
JOIN STG.AUTO_REPR_CHLD_STG B
ON A.TEST_SEQ_NUM=B.TEST_SEQ_NUM
WHERE EXISTS (SELECT A.*, B.*
FROM MST.AUTO_REPR_PAR A
JOIN MST.AUTO_REPR_CHLD B
ON A.TEST_SEQ_NUM=B.TEST_SEQ_NUM
)
后端是 Teradata v13。我目前正在研究 CASCADE DELETE 选项,但我什至不确定它是否受支持....有什么想法吗?
【问题讨论】:
-
是
joined tables not allowed in from clause吗?我敢打赌,在这种情况下,您需要弄清楚如何在WHERE EXISTS子句中完成同样的事情。 -
你找到答案了吗?
-
你试过级联吗??
-
很遗憾,我们的 Teradata db 版本不支持 DELETE CASCADE。