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

Sql Cleanup script, delete from one table that's not in the other

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

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

它的简单代码检查p6prodpf中是否有一条记录在P6OPIPF中没有记录然后删除p6prodpf中的记录。

我面临的问题是,即使 P6OPIPF 中有记录,也有 p6prodpf 被删除的情况。

是否有更好的方法或更安全的方法.. 是否有任何原因会导致这种情况发生。

脚本在凌晨 3 点运行。

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

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

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