Пытаюсь удалить сразу из нескольких таблиц. Я провел небольшое исследование и пришел к следующему
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`
Однако я получаю эту ошибку
Uncaught Database_Exception [1064]: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис рядом с 'p,
pets_activities
pa ...
Я никогда раньше не выполнял удаление кросс-таблицы, поэтому у меня нет опыта и я застрял!
Что я делаю не так?
SELECT
заняло столько же времени?Поскольку это кажется простыми отношениями родитель / потомок между
pets
иpets_activities
, вам лучше создать ограничение внешнего ключа с помощью каскада удаления.Таким образом, когда
pets
строка удаляется,pets_activities
связанные с ней строки также автоматически удаляются.Тогда ваш запрос станет простым:
источник
pa
это правильный дочерний элемент из-p
заid/pet_id
сопоставления.Использовать это
или
источник
В настоящий момент у меня нет базы данных mysql для тестирования, но пробовали ли вы указать, что следует удалить до предложения from? Например:
Я думаю, что используемый вами синтаксис ограничен более новыми версиями mysql.
источник
Синтаксис мне кажется правильным ... попробуйте изменить его, чтобы использовать
INNER JOIN
...Посмотри на это .
источник
Для всех, кто читал это в 2017 году, я сделал нечто подобное.
Как правило, для удаления строк из нескольких таблиц ниже приведен синтаксис, которому я следую. Решение основано на предположении, что между двумя таблицами существует некоторая связь.
источник
Я нашел эту статью, в которой показано, как удалить данные из нескольких таблиц с помощью оператора MySQL DELETE JOIN с хорошим объяснением.
источник