ホームページ >データベース >mysql チュートリアル >LEFT JOIN を使用して、あるテーブルで別のテーブルに存在しないレコードを検索するにはどうすればよいですか?
LEFT JOIN を使用して、あるテーブル内の別のテーブルに存在しないレコードを選択します
データベース内の複数のテーブルを操作する場合、あるテーブルのどのレコードが別のテーブルに存在しないかを判断するのは一般的なタスクです。この記事では、SQL クエリを使用してこのタスクを実行する方法について説明します。
table1 と table2 という 2 つのテーブルがあり、どちらにも id と name という名前の列が含まれているとします。目標は、table1 に表示されないすべての名前を table2 から選択することです。
伝統的な手法
最初に提供されたクエリは、table1 にない名前を table2 から直接選択しようとします:
<code class="language-sql">SELECT name FROM table2 -- that are not in table1 already</code>
ただし、このクエリは、普遍的に利用できるわけではない特定のデータベース機能に依存しています。
左結合ソリューション
代わりに、LEFT JOIN を使用してこれを効率的に行うことができます。
<code class="language-sql">SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL</code>
説明
このクエリでは、名前列を比較することによって、table1 (別名 t1) と table2 (別名 t2) を結合します。 LEFT JOIN は、table1 内のすべての行を保持し、table2 内の一致する行を返します。 table2 に一致する行がない table1 の行の場合、table2 の一致する行は NULL になります。
最後に、WHERE 句を使用して、table2 に一致する NULL 行を持つ結果内の行のみを選択します。これにより、table1 に存在しない名前のみを table2 で選択することが保証されます。
LEFT JOIN メソッドの利点
LEFT JOIN メソッドには次の利点があります:
以上がLEFT JOIN を使用して、あるテーブルで別のテーブルに存在しないレコードを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。