答案 0 :(得分:187)
在JOIN
声明中使用DELETE
。
DELETE p, pa
FROM pets p
JOIN pets_activities pa ON pa.id = p.pet_id
WHERE p.order > :order
AND p.pet_id = :pet_id
或者你可以使用......
DELETE pa
FROM pets_activities pa
JOIN pets p ON pa.id = p.pet_id
WHERE p.order > :order
AND p.pet_id = :pet_id
...仅从pets_activities中删除
请参阅http://dev.mysql.com/doc/refman/5.0/en/delete.html
对于单表删除,但具有参照完整性,还有其他方法可以使用EXISTS,NOT EXISTS,IN,NOT IN等。但是上面的那个用于指定要在FROM之前使用别名删除哪些表的方法条款可以让你更轻松地脱离几个非常紧张的地方。我倾向于在99%的情况下与EXISTS联系,然后这个MySQL语法占据了当天的1%。
答案 1 :(得分:19)
答案 2 :(得分:13)
使用此
DELETE FROM `articles`, `comments`
USING `articles`,`comments`
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4
或
DELETE `articles`, `comments`
FROM `articles`, `comments`
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4
答案 3 :(得分:2)
答案 4 :(得分:2)
答案 5 :(得分:1)
对于在2017年阅读此内容的人来说,这就是我做过类似事情的方式。
DELETE pets, pets_activities FROM pets inner join pets_activities
on pets_activities.id = pets.id WHERE pets.`order` > :order AND
pets.`pet_id` = :pet_id
通常,要从多个表中删除行,我将遵循以下语法。该解决方案基于两个表之间存在某种关系的假设。
DELETE table1, table2 FROM table1 inner join table2 on table2.id = table1.id
WHERE [conditions]
答案 6 :(得分:1)
我发现本文向您展示了如何通过使用MySQL DELETE JOIN语句从多张表中删除数据,并提供了很好的解释。