Сложные DELETE-запросы с JOIN (mysql)
Очень часто возникает задача обслуживания библиотек или проектов со связными таблицами. Например, нам необходимо удалить из одной таблицы все записи, связанные с другой:
DELETE t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.parent_id = t2.id WHERE t2.id != '';
Такой запрос удалит все дочерние записи из таблицы t2.
Внимание! Помните, что если в условии не учавствует поле из родительской таблицы, то будут удалены ВСЕ записи таблицы table2.
В ситуации же, когда у нас уже нет родительской записи и надо удалить все «осиротевшие», делаем так:
DELETE FROM table2 WHERE parent_id NOT IN (SELECT id FROM table2);
