MySQL で孤立したレコードを効率的に削除する: 実証済みの 3 つの方法
このガイドでは、MySQL の孤立行 (共有 ID に基づく関連テーブル内の対応するレコードが欠落しているデータベース エントリ) を削除するための 3 つの効果的な手法を説明します。
方法 1: LEFT JOIN と IS NULL を利用する
このアプローチでは、LEFT JOIN
を利用して、特定の ID 列に基づいて 2 つのテーブルのデータを結合します。 結合テーブルの ID 列の NULL
値によって識別される孤立行は、削除の対象になります。
<code class="language-sql">DELETE b FROM BLOB b LEFT JOIN FILES f ON f.id = b.fileid WHERE f.id IS NULL;</code>
方法 2: 存在しない雇用
このメソッドは、NOT EXISTS
を使用したサブクエリを使用して、関連テーブル内に一致するレコードの存在を確認します。一致しない行には削除のフラグが立てられます。
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS (SELECT NULL FROM FILES f WHERE f.id = fileid);</code>
方法 3: NOT IN
を利用するこの単純なアプローチでは、NOT IN
を使用して ID を直接比較します。 関連テーブルに存在しない ID を持つ行が特定され、削除されます。
<code class="language-sql">DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id FROM FILES f);</code>
重要な考慮事項:
データの整合性を確保するために、トランザクション内で常に DELETE
ステートメントを実行します。 これにより、エラーや意図しない結果が発生した場合にロールバックが可能になります。 START TRANSACTION
の前に DELETE
を使用し、その後に COMMIT
(または ROLLBACK
) を使用します。
以上が存在するかどうかではなく、結合を使用してmysqlで孤児行を削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。