ホームページ >データベース >mysql チュートリアル >あるテーブルから別のテーブルに存在しないレコードを選択するにはどうすればよいですか?

あるテーブルから別のテーブルに存在しないレコードを選択するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-19 16:27:09379ブラウズ

How to Select Records from One Table That Don't Exist in Another?

データベーステーブル全体で欠落しているレコードを特定する

データベース クエリでは、別のテーブルに対応するエントリが存在しないテーブルからデータを取得することが頻繁に必要になります。これを例で説明してみましょう:

シナリオ:

次の構造を持つ 2 つのテーブル「table1」と「table2」があります。

<code>table1 (id, name)
table2 (id, name)</code>

目的:

私たちの目標は、「table1」に存在しない「name」値を「table2」から抽出することです。

素朴なアプローチは次のようになります:

<code>SELECT name
FROM table2
-- where name is not in table1</code>

残念ながら、この SQL クエリは不完全であり、期待される結果は得られません。

効果的な解決策:

正しいアプローチには、LEFT JOIN:

を利用することが含まれます。
<code class="language-sql">SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;</code>

説明:

  • LEFT JOIN: これにより、'table1' 内の一致する行に関係なく、'table2' のすべての行が結果セットに含まれることが保証されます。
  • WHERE 句: 条件 WHERE t1.name IS NULL は結果をフィルターし、'table1' に対応する 'name' がない 'table2' の行のみを保持します。
  • フィールドの選択: クエリは、'table2' から 'name' 列を選択します。これは、最終結果でそのテーブルに存在することが保証されている唯一のフィールドであるためです。

この LEFT JOIN 手法は、さまざまなデータベース システム間で広く互換性があり、テーブル間で欠落しているレコードを識別するための堅牢な方法を提供します。

以上があるテーブルから別のテーブルに存在しないレコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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