ホームページ > データベース > mysql チュートリアル > SQL 結合を使用して MySQL の複数のテーブルにまたがるレコードを削除するにはどうすればよいですか?

SQL 結合を使用して MySQL の複数のテーブルにまたがるレコードを削除するにはどうすればよいですか?

DDD
リリース: 2025-01-20 17:08:11
オリジナル
543 人が閲覧しました

How to Delete Records Across Multiple Tables in MySQL Using SQL Joins?

MySQL で SQL JOIN を使用してレコードを削除します

概要

この記事では、SQL JOIN を使用して MySQL の複数のテーブルからレコードを削除する方法について説明します。具体的には、クライアントがシステムから削除されたときに、そのクライアントに関連するすべての投稿を削除するというシナリオを検討しました。

問題の説明

クライアント、プロジェクト、投稿という 3 つのテーブルがあるとします。プロジェクト テーブルにはクライアント テーブルを参照する外部キー client_id があり、ポスト テーブルにはプロジェクト テーブルを参照する外部キー project_id があります。特定のクライアントが削除されると、そのクライアントに関連付けられたすべての投稿が削除されるようにしたいと考えています。

解決策

このために、SQL JOIN を使用して間接的に投稿を削除します。更新されたコードは次のとおりです:

<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>
ログイン後にコピー

このクエリでは、INNER JOIN を使用して、プロジェクト テーブル内の対応するプロジェクトを持つ投稿を削除することを指定します。ここで、client_id は削除するクライアントと一致します。

代替方法

投稿を削除するもう 1 つの代替手段は、外部キー カスケード削除を使用することです。これには、posts テーブルに次の制約を追加することが含まれます:

<code class="language-sql">ALTER TABLE posts ADD FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE;</code>
ログイン後にコピー

この制約により、アイテムを削除すると、そのアイテムに関連付けられたすべての投稿も自動的に削除されます。

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

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