ホームページ > データベース > mysql チュートリアル > SQL の「NOT EXISTS」を使用して欠落レコードを効率的に見つけるにはどうすればよいですか?

SQL の「NOT EXISTS」を使用して欠落レコードを効率的に見つけるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-10 09:52:10
オリジナル
1005 人が閲覧しました

How to Efficiently Find Missing Records Using SQL's `NOT EXISTS`?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート