В первом SELECT вы выбираете sale_detail_auto_id
полей, которые также существуют под тем же именем поля в новых и обновленных записях, поэтому вы видите удаленные идентификаторы вместе с новыми. Вам нужно переименовать этот столбец, чтобы избежать конфликта.
Пожалуйста, используйте AS, например:
sale_detail_auto_id` AS `deleted_sale_detail_auto_id`
и затем в EXISTS используйте это поле:
Where Not Exists(deleted_sale_detail_auto_id, sale_detail_auto_id);
ОБНОВЛЕНИЕ:
Кроме того, я думаю, что не имеет смысла хранить удаленные идентификаторы в модели данных, поэтому вы можете назвать эту таблицу:
[TEMP_deleted_ids]
SELECT sale_detail_auto_id` AS `deleted_sale_detail_auto_id`
и затем в конце скрипта удалите его:
DROP Table [TEMP_deleted_ids];