MySQL マルチテーブル レコード削除スキル
複数の MySQL テーブルからレコードを同時に削除するのは複雑な作業です。複数のテーブル参照を含む WHERE 句を指定した DELETE ステートメントを直接使用すると、通常は失敗します。たとえば、次のコード:
<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>
通常、次のようなエラーが生成されます:
Uncaught Database_Exception [1064]: SQL 構文にエラーがあります。「p,pets_activities pa...」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
正しいアプローチは、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>
これらのメソッドは、MySQL の複数のテーブルからレコードを効果的に削除できます。もちろん、参照整合性を伴う単一テーブルの削除には、EXISTS、NOT EXISTS、IN、NOT IN などの他の方法もあります。ただし、上記の MySQL 構文は、特に複雑な削除シナリオを扱う場合に、複数テーブルの削除に対する一般的なソリューションを提供します。
以上がMySQL の複数のテーブルからレコードを適切に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。