Мне нужно удалить записи, которые присутствуют в целевой таблице, но отсутствуют в исходной таблице. Первичный ключ в таблице назначения - это идентификатор auto_increment, которого нет в исходной таблице. И исходная, и целевая таблицы содержат набор уникальных комбинаций клавиш, которые можно использовать для уникальной идентификации строк в обеих таблицах. Какому подходу я должен следовать? Как я могу удалить, если я буду использовать несколько комбинаций столбцов в качестве уникального ключа, а не один первичный ключ (нет в источнике)?
delete from dest_table
where (uniq_key_col1,uniq_key_col2) not in (
select dest.uniq_key_col1,dest.uniq_key_col2
from dest_table dest
join source_table source
on dest.uniq_key_col1=source.uniq_key_col1
and dest.uniq_key_col2=source.uniq_key_col2
)
Вот как это должно выглядеть в идеале (только для ясности и, пожалуйста, игнорируйте ошибку в предложении where из-за нескольких столбцов)