我试图一次从几个表中删除。我做了一些研究,并提出了
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 … 附近使用…
pets_activities
我以前从未做过跨表删除操作,所以我现在还没有经验,并且一直坚持下去!
我究竟做错了什么?
JOIN 在DELETE语句中使用a 。
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
看到这个。
对于单表中删除,但具有参照完整性,也有与做的其他方式EXISTS,NOT EXISTS,IN,NOT IN等,但上面你来自哪里,用别名来删除该表指定前一个FROM条款可以让你出几个漂亮的紧斑点更容易。我倾向于EXISTS在99%的情况下使用,然后有1%的MySQL语法需要一天的时间。
EXISTS
NOT EXISTS
IN
NOT IN
FROM