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 中国語 Web サイトの他の関連記事を参照してください。