Задать вопрос
@Den18
MYSQL, JS хобби

Как удалить из трех или более таблиц mysql по одному id?

Для удаления использую запрос из документации.
DELETE FROM userdata, moneys, user_roles USING userdata INNER JOIN moneys INNER JOIN user_roles WHERE userdata.userid=525300849082105856 AND moneys.userid=525300849082105856 AND user_roles.userid=525300849082105856;

Но возникает трудность когда в одной из таблиц нет записей с этим userid, и запрос не удаляет ни одной записи в других таблицах.
Подскажите как изменить запрос.
  • Вопрос задан
  • 187 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
DELETE 
FROM userdata, moneys, user_roles 
USING ( SELECT 525300849082105856 userid ) criteria
LEFT JOIN userdata USING (userid)
LEFT JOIN moneys USING (userid)
LEFT JOIN user_roles USING (userid);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
а left join?

По уму правильный способ, при создании foreign key index нужно указать on delete cascade, и тогда при удалении записи в главной таблице, все связанные записи удалятся автоматически
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы