时间:2010-07-26 03:05:00

标签: mysql sql mysql-error-1064 sql-delete

7 个答案:

答案 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语句从多张表中删除数据,并提供了很好的解释。

enter image description here