Предполагая, что вы не настроили никаких каскадных удалений, и так как вы спросили, как это сделать в sql, я вижу два варианта:
1) удалить из таблицы2 где (условие)
delete from table1 where id not in (select distinct id_table1 from table2)
2) удалить из таблицы1, где идентификатор в (выбрать отличный идентификатор_таблицы1 из таблицы2, где (условие))
delete from table2 where id_table2 not in (select id from table1)
Предполагая, что размер таблицы2 намного больше, чем в таблице1, а условие значительно сокращает метод сканирования размера 1полная таблица 2 один раз, удаляет много записей, затем сканирует один раз, метод 2 дважды просматривает полную таблицу 2
Это заставляет меня думать, что метод 1 немного более эффективен, если размеры таблиц очень и очень велики.