JOIN を使用して MySQL のサブテーブル レコードを削除します
MySQL などのリレーショナル データベースでは、レコードの削除に複数のテーブルや複雑な関係が関係する場合があります。 1 つのシナリオは、親テーブルに関係する条件に基づいて子テーブルからレコードを削除する必要がある場合です。
シーン:
次のデータベース構造を考えてみましょう:
ターゲット:
クライアント自体を削除して、特定のクライアントに関連付けられたすべての投稿を削除するとします。ただし、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 サイトの他の関連記事を参照してください。