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中文網其他相關文章!