一尘不染

如何从MySQL中的多个表中删除?

mysql

我试图一次从几个表中删除。我做了一些研究,并提出了

DELETE FROM `pets` p,
            `pets_activities` pa
      WHERE p.`order` > :order
        AND p.`pet_id` = :pet_id
        AND pa.`id` = p.`pet_id`

但是,我收到此错误

未捕获的Database_Exception
[1064]:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’p,pets_activitiespa …
附近使用…

我以前从未做过跨表删除操作,所以我现在还没有经验,并且一直坚持下去!

我究竟做错了什么?


阅读 315

收藏
2020-05-17

共1个答案

一尘不染

JOINDELETE语句中使用a 。

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

看到这个

对于单表中删除,但具有参照完整性,也有与做的其他方式EXISTSNOT EXISTSINNOT IN等,但上面你来自哪里,用别名来删除该表指定前一个FROM条款可以让你出几个漂亮的紧斑点更容易。我倾向于EXISTS在99%的情况下使用,然后有1%的MySQL语法需要一天的时间。

2020-05-17