ホームページ >データベース >mysql チュートリアル >Table2 に一致するエントリがない Table1 の行を検索して削除するにはどうすればよいですか?

Table2 に一致するエントリがない Table1 の行を検索して削除するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-15 17:26:44508ブラウズ

How to Find and Remove Rows in Table1 Without Matching Entries in Table2?

別のテーブルに一致しない行をデータベースから取得する: 詳細な説明

データベース管理の世界では、外部キー制約の欠落によりデータの整合性が損なわれることは珍しくありません。このような問題を修正するには、参照されるテーブル内で一致しない行を特定して削除する必要があります。この記事では、このタスクを実行するクエリの作成方法について詳しく説明し、機能の例とその基礎となる仕組みの詳細な説明を示します。

2 つのテーブル Table1 と Table2 があり、Table1 には Table2 への外部キー参照として使用される値が含まれているとします (ただし、外部キー制約はありません)。私たちの目標は、Table2 に一致しない Table1 のすべての行を返し、削除できるようにするクエリを構築することです。

クエリの構築と解釈

次のクエリは要件を満たしています:

<code class="language-sql">SELECT t1.ID
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID = t2.ID
WHERE t2.ID IS NULL;</code>

クエリ分解:

  • LEFT JOIN: この結合タイプは、Table1 (t1) のすべての行と、Table2 (t2) の一致する行を返します (ID 列に基づいて)。この場合、Table2 に一致する行があるかどうかに関係なく、Table1 のすべての行が返されます。
  • ON t1.ID = t2.ID: この条件は、結合条件、つまり両方のテーブルの ID 列の一致を指定します。
  • WHERE t2.ID IS NULL: この条件は、Table2 (t2.ID) によって返された ID が NULL かどうかをチェックして結果をフィルターします。そうである場合は、Table1 の対応する ID に一致する行が Table2 に存在しないことを意味します。結果を t2.ID が NULL である行に制限することで、Table2 に一致するものがない Table1 内のすべての行を効果的に取得します。

このクエリを使用すると、Table2 に対応するエントリがない Table1 の行を簡単に特定して削除できるため、データベースのデータの整合性が維持されます。

以上がTable2 に一致するエントリがない Table1 の行を検索して削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。