Я должен удалить строки из guide_category
это не имеет никакого отношения с guide
таблица (мертвые отношения).
Вот то, что я хочу сделать, но это, конечно, не работает.
DELETE FROM guide_category AS pgc
WHERE pgc.id_guide_category IN (SELECT id_guide_category
FROM guide_category AS gc
LEFT JOIN guide AS g ON g.id_guide = gc.id_guide
WHERE g.title IS NULL)
Ошибка:
Вы не можете указать целевую таблицу 'guide_category' для обновления в ИЗ пункта
В связи с проблемами реализации блокировки, MySQL
не позволяет ссылаться на соответствующую таблицу с DELETE
или UPDATE
.
Вам нужно сделать JOIN
здесь вместо:
DELETE gc.*
FROM guide_category AS gc
LEFT JOIN
guide AS g
ON g.id_guide = gc.id_guide
WHERE g.title IS NULL
или просто использовать NOT IN
:
DELETE
FROM guide_category AS gc
WHERE id_guide NOT IN
(
SELECT id_guide
FROM guide
)
Я думаю, из вашего описания будет достаточно:
DELETE FROM guide_category
WHERE id_guide NOT IN (SELECT id_guide FROM guide)
Я предполагаю, что нет никаких ограничений на целостность ссылок в соответствующих таблицах, не так ли?
Как насчет:
DELETE guide_category
WHERE id_guide_category IN (
SELECT id_guide_category
FROM guide_category AS gc
LEFT JOIN guide AS g
ON g.id_guide = gc.id_guide
WHERE g.title IS NULL
)