単一のクエリで MySQL の複数のテーブルを削除する
ユーザー関連の情報を格納する複数のテーブルがあると、ユーザーを効率的に削除しようとすると課題が生じる可能性がありますデータ。 「SQL の 1 つのクエリで複数のテーブルから同時にデータを削除することは可能ですか?」
アプローチ:
提供されたコードは、簡単なクエリを実装しています。アプローチ:
DELETE FROM table1 WHERE user_id='$user_id'; DELETE FROM table2 WHERE user_id='$user_id'; DELETE FROM table3 WHERE user_id='$user_id'; DELETE FROM table4 WHERE user_id='$user_id';
このアプローチには、テーブルごとに個別の DELETE ステートメントを実行し、削除プロセスをカスケードすることが含まれます。ただし、これは最も効率的または柔軟なオプションではない可能性があります。
重要な啓示:
驚くべきことに、MySQL はこのタスクを達成するためのより高度な技術を提供しています。公式ドキュメントによると、単一のクエリで複数のテーブルから行を削除することが実際に可能です。 JOIN 構文を利用すると、共通の条件 (この場合は user_id フィールド) に基づいてテーブル間の関係を確立できます。
改訂されたコード:
マニュアルには説明的な例が記載されています。
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
このシナリオでは、このアプローチを次のように適応できます。
DELETE user_info.* FROM user_info INNER JOIN table1 ON user_info.user_id = table1.user_id INNER JOIN table2 ON user_info.user_id = table2.user_id INNER JOIN table3 ON user_info.user_id = table3.user_id INNER JOIN table4 ON user_info.user_id = table4.user_id WHERE user_info.user_id = '$user_id';
この手法を使用すると、1 つのクエリで $user_id で指定されたユーザーに関連する 4 つのテーブルすべてから行が削除され、以前のアプローチを効果的に模倣しますが、効率が向上します。
以上が単一の MySQL クエリで複数のテーブルのデータを同時に削除できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。