在 MySQL 中使用多个 JOIN 进行删除?

DELETE with multiple JOIN in MySQL?

我有一个包含多个 JOIN 的 SELECT 查询,它工作得很好,但现在我想删除这些行,但我找不到如何做。 此代码 returns 我出错 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

我需要一些帮助,谢谢

基本上,您需要指定 table 要删除的内容。假设这是 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 还支持从多个 table 中删除。但是,级联约束通常是更好的方法。

你的语法错误。
也将其与别名一起使用:

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