ホームページ >データベース >mysql チュートリアル >SQL 結合を使用して MySQL の複数のテーブルにまたがるレコードを削除するにはどうすればよいですか?
この記事では、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 サイトの他の関連記事を参照してください。