ホームページ > データベース > mysql チュートリアル > MySQL の複数のテーブルからレコードを適切に削除するにはどうすればよいですか?

MySQL の複数のテーブルからレコードを適切に削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-19 10:31:09
オリジナル
509 人が閲覧しました

How to Properly Delete Records from Multiple Tables in MySQL?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート