ホームページ >データベース >mysql チュートリアル >MySQL で JOIN を使用して子テーブルからレコードを削除するにはどうすればよいですか?

MySQL で JOIN を使用して子テーブルからレコードを削除するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-20 17:13:11532ブラウズ

How to Delete Records from a Child Table Using a JOIN in MySQL?

JOIN を使用して MySQL のサブテーブル レコードを削除します

MySQL などのリレーショナル データベースでは、レコードの削除に複数のテーブルや複雑な関係が関係する場合があります。 1 つのシナリオは、親テーブルに関係する条件に基づいて子テーブルからレコードを削除する必要がある場合です。

シーン:

次のデータベース構造を考えてみましょう:

  • クライアントテーブル、主キーとして client_id を使用
  • プロジェクト テーブル、主キーとして project_id、外部キーとして client_id
  • post テーブル、post_id を主キー、project_id を外部キーとする

ターゲット:

クライアント自体を削除して、特定のクライアントに関連付けられたすべての投稿を削除するとします。ただし、posts テーブルは client_id を直接参照しません。 project_id のみを参照します。

最初の試行 (無効):

<code class="language-sql">DELETE 
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

解決策:

問題を修正して投稿を正常に削除するには、DELETE ステートメントでテーブル名 (投稿) を指定する必要があります。

<code class="language-sql">DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

この変更されたクエリは、結合条件に基づいて、明示的に Posts テーブルを削除の対象としています。

以上がMySQL で JOIN を使用して子テーブルからレコードを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。