我们在SQL(DB2)as400中编写了一个清理脚本来清理表。 ps我们正在修复导致数据问题的流程。
SQL:DELETE FROM p6prodpf A WHERE (0 = (SELECT COUNT(*) FROM P6OPIPF B WHERE B.OPIID = A.OPIID))
检查p6prodpf
中P6OPIPF
中没有记录的记录是否会删除p6prodpf
中的记录的简单代码。
我遇到的问题是即使p6prodpf
中有记录,也会删除P6OPIPF
的实例。
有没有更好的方法来做这个或更安全的方式..有什么理由可以发生这种情况。
脚本早上凌晨3点运行。
这也感觉像是一个排序问题,但当我检查P6OPIPF
中的记录时,它已存在但已在p6prodpf
中删除。
答案 0 :(得分:2)
使用“NOT EXISTS”代替“0 =”:
DELETE FROM p6prodpf A WHERE NOT EXISTS (SELECT 1 FROM P6OPIPF B WHERE B.OPIID = A.OPIID)