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)
我们在 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)