ホームページ >データベース >mysql チュートリアル >あるテーブルから別のテーブルに存在しないレコードを選択するにはどうすればよいですか?
データベース クエリでは、別のテーブルに対応するエントリが存在しないテーブルからデータを取得することが頻繁に必要になります。これを例で説明してみましょう:
シナリオ:
次の構造を持つ 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' の行のみを保持します。この LEFT JOIN
手法は、さまざまなデータベース システム間で広く互換性があり、テーブル間で欠落しているレコードを識別するための堅牢な方法を提供します。
以上があるテーブルから別のテーブルに存在しないレコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。