Эта ссылка оказалась полезной
Скопировано оттуда
Часто нужно удалить некоторые записи из таблицы на основе критериев в другой таблице. Как удалить из одной из этих таблиц, не удаляя записи в обеих таблицах?
DELETE DeletingFromTable
FROM DeletingFromTable INNER JOIN CriteriaTable
ON DeletingFromTable.field_id = CriteriaTable.id
WHERE CriteriaTable.criteria = "value";
Ключ в том, что вы указываете имя таблицы, из которой нужно удалить, как SELECT. Итак, JOIN и WHERE производят выбор и ограничение, а DELETE - удаление. Однако вы не ограничены одним столом. Если у вас есть отношение «многие ко многим» (например, журналы и подписчики, к которым присоединилась подписка), и вы удаляете подписчика, вам также необходимо удалить любые потенциальные записи из модели присоединения.
DELETE subscribers, subscriptions
FROM subscribers INNER JOIN subscriptions
ON subscribers.id = subscriptions.subscriber_id
INNER JOIN magazines
ON subscriptions.magazine_id = magazines.id
WHERE subscribers.name='Wes';
Удаление записей с помощью соединения также может быть выполнено с помощью LEFT JOIN и WHERE, чтобы увидеть, была ли объединенная таблица NULL, чтобы вы могли удалить записи в одной таблице, у которых не было совпадений (например, при подготовке к добавлению отношения. ) Пример сообщения будет позже.