Sql清理脚本,从一个不在另一个表中的表中删除

时间:2015-07-28 12:36:01

标签: sql database db2 db2-400

我们在SQL(DB2)as400中编写了一个清理脚本来清理表。 ps我们正在修复导致数据问题的流程。

SQL:DELETE FROM p6prodpf A WHERE (0 = (SELECT COUNT(*) FROM P6OPIPF B WHERE B.OPIID = A.OPIID))

检查p6prodpfP6OPIPF中没有记录的记录是否会删除p6prodpf中的记录的简单代码。

我遇到的问题是即使p6prodpf中有记录,也会删除P6OPIPF的实例。

有没有更好的方法来做这个或更安全的方式..有什么理由可以发生这种情况。

脚本早上凌晨3点运行。

这也感觉像是一个排序问题,但当我检查P6OPIPF中的记录时,它已存在但已在p6prodpf中删除。

1 个答案:

答案 0 :(得分:2)

使用“NOT EXISTS”代替“0 =”:

DELETE FROM p6prodpf A WHERE NOT EXISTS (SELECT 1 FROM P6OPIPF B WHERE B.OPIID = A.OPIID)