MySQL跨表删除:语法错误排查
在MySQL中,同时从多个表中删除行需要特殊的查询语法。尝试执行以下删除查询时:
<code class="language-sql">DELETE FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`</code>
可能会遇到以下错误:
<code>Uncaught Database_Exception [ 1064 ]: You have an error in your SQL syntax; check the manual...</code>
该错误源于跨表删除的语法错误。要解决此问题,请在DELETE语句中使用JOIN:
<code class="language-sql">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</code>
或者,要仅从pets_activities
表中删除,可以使用:
<code class="language-sql">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</code>
通过这种方式使用JOIN语句,可以有效地执行MySQL中的跨表删除操作。请记住,这种方法也适用于具有参照完整性的单表删除。
以上是如何正确删除MySQL中多个表的行?的详细内容。更多信息请关注PHP中文网其他相关文章!