Единственный способ, который я могу себе представить, - это написать запрос, который возвращает строки из вашей основной таблицы, которые не содержат деталей, а затем объединить результат этого запроса с основной таблицей, что-то вроде
DELETE FROM table1 t
INNER JOIN
(
SELECT pk_column FROM table1 t1
LEFT JOIN details1 d1 ON (d1.fk_column = t1.pk_column)
// other LEFT JOIN[s] if you have more detail tables.
WHERE d1.pk_column IS NULL
)a ON t.pk_column = a.pk_column
Альтернатива присоединению, которая работает примерно так же, состоит в добавлении WHERE NOT EXIST
для проверки