Постоянно с этим сталкиваюсь. По работе имею дело с кучей клиентских сандбоксов которые надо синкать. И постоянно сталкиваюсь с такими записями зомби. Все дело в том что когда создаются partial copy (возможно и full copy) salesforce почему-то копирует только первые 10к записей объекта и получается такая ситуация:
на проде есть 20к контактов которые ссылаются на 20к аккаунтов. Сандбокс будет содержать 10к контактов и 10к аккантов. При этом будут существовать контакты которые ссылаются на акканты которые не были скопированы. И получается что вроде ссылка в контакте на аккаунт есть! но этот аккаунт ид не существует в данном сандбоксе.
На счет такого магического SOQL запроса не знал! Надо попробовать.
Я делаю проверку в лоб - тупо достают все ИД существующих аккаунтов и потом делаю запрос
SELECT Id FROM Contact WHERE AccountID NOT IN :existingAccountIDs
Только в моем случае все немного сложнее. Мне надо проверить где-то 50 объектов, у которых по несколько лукапов
.
Крайне странно что сам Salesforce ничего с этим не делает.