Sql Cleanup скрипт, удалить из одной таблицы, которой нет в другой

Мы написали скрипт очистки в 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,

1 ответ

Решение

Используйте "НЕ СУЩЕСТВУЕТ" вместо "0 =":

DELETE FROM p6prodpf A WHERE NOT EXISTS (SELECT 1 FROM P6OPIPF B WHERE B.OPIID = A.OPIID)
Другие вопросы по тегам