SELECT * WHERE NOT EXISTS: 欠落しているレコードの検索
SQL クエリ「SELECT * from members WHERE NOT EXISTS (SELECT name FROM eotm_dyn)」 " は、"employees" テーブルから名前が存在しないすべての行を取得することを目的としています。 「eotm_dyn」テーブル。ただし、このクエリは不完全であり、結果は返されません。
クエリを完了するには、共通フィールド (通常は一意の識別子フィールド) で 2 つのテーブルを結合する必要があります。テーブルが「employeeID」フィールドで結合されていると仮定すると、修正されたクエリは次のようになります。
SELECT * FROM employees e WHERE NOT EXISTS ( SELECT null FROM eotm_dyn d WHERE d.employeeID = e.id )
「NOT EXISTS」サブクエリは、「eotm_dyn」テーブルに「employeeID」が含まれる行が存在しないことをチェックします。 「employees」テーブルの現在の行の「id」と一致します。そのような行が存在しない場合、外部クエリは「employees」テーブルから行全体を返します。このアプローチにより、「eotm_dyn」テーブルにエントリのない従業員のみが確実に選択されます。
または、クエリは、LEFT JOIN と後続の NULL 値フィルターを使用して作成できます。
SELECT * FROM employees e LEFT JOIN eotm_dyn d ON e.id = d.employeeID WHERE d.name IS NULL
ただし、この方法は、特に大規模なデータベースの場合、NOT EXISTS サブクエリを使用するよりも効率が劣る可能性があります。
以上がSQL の「NOT EXISTS」を使用して欠落レコードを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。