УДАЛИТЬ с несколькими СОЕДИНЕНИЯМИ в MySQL? - PullRequest
0 голосов
/ 25 мая 2020

У меня есть запрос SELECT с несколькими JOIN, который отлично работает, но теперь я хочу УДАЛИТЬ эти строки и не могу найти, как это сделать. Этот код возвращает мне ошибку SQL (1064):

DELETE FROM rapport
INNER JOIN course ON rapport.course_id = course.id
INNER JOIN reunion ON course.reunion_id  = reunion.id
INNER JOIN paris ON rapport.paris_id = paris.id 
WHERE reunion.id = 231431
AND paris.bookmaker_id = 3

Мне нужна помощь, спасибо

Ответы [ 2 ]

1 голос
/ 25 мая 2020

Ваш синтаксис неверен. Используйте это также с псевдонимами:

DELETE r
FROM rapport r
INNER JOIN course c ON r.course_id = c.id
INNER JOIN reunion u ON c.reunion_id  = u.id
INNER JOIN paris p ON r.paris_id = p.id 
WHERE u.id = 231431 AND p.bookmaker_id = 3

Если вы хотите удалить из всех таблиц, вы должны указать их псевдонимы после DELETE:

DELETE r, c, u, p
FROM rapport r
INNER JOIN course c ON r.course_id = c.id
INNER JOIN reunion u ON c.reunion_id  = u.id
INNER JOIN paris p ON r.paris_id = p.id 
WHERE u.id = 231431 AND p.bookmaker_id = 3
1 голос
/ 25 мая 2020

По сути, вам нужно указать, из какой таблицы удалять. Предполагая, что это rapport:

DELETE r
    FROM rapport r JOIN
         course c
         ON r.course_id = c.id JOIN
         reunion ru 
         ON c.reunion_id  = ru.id JOIN
         paris p 
         ON r.paris_id = p.id 
    WHERE ru.id = 231431 AND p.bookmaker_id = 3;

MySQL также поддерживает удаление из нескольких таблиц. Однако каскадные ограничения обычно более эффективны.

...