MySQL имеет многотабличный синтаксис DELETE .
По сути, вы берете запрос SELECT, который выбирает строки, которые вы хотите удалить, и вы изменяете SELECT * FROM
на DELETE <table_name>, <table_name> FROM
с <table_name>, <table_name>
являющимися таблицами для удаления из.
Например, если у вас есть эти запросы DELETE:
DELETE FROM comments WHERE post_id IN (SELECT post_id FROM posts WHERE category_id = 1);
DELETE FROM posts WHERE category_id = 1;
DELETE FROM categories WHERE category_id = 1;
Вы можете переписать их как SELECT, который выбирает все строки, которые вы хотите удалить:
SELECT *
FROM categories
JOIN posts USING (category_id)
JOIN comments USING (post_id)
WHERE category_id = 1
Затем вы можете заменить SELECT
на несколько столов DELETE
:
DELETE categories, posts, comments
FROM categories
JOIN posts USING (category_id)
JOIN comments USING (post_id)
WHERE category_id = 1