SQL を使用して欠落している従業員レコードを効率的に取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-26 20:31:10
オリジナル
621 人が閲覧しました

How to Efficiently Retrieve Missing Employee Records Using SQL?

「SELECT * WHERE NOT EXISTS」を使用した欠落データの取得

ユーザーは、特定の場所にある「employees」テーブルからすべてのレコードを抽出しようとしています。セルが「eotm_dyn」テーブルに存在しません。これを達成するために、ユーザーは次のクエリを使用します:

SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
ログイン後にコピー

しかし、約 20 の名前が欠落していることがわかっているにもかかわらず、このクエリでは一貫して結果が得られません。

問題の理解

エラーは、クエリ内の 2 つのテーブルの結合に失敗していることにあります。現状では、クエリは「employees」テーブルを参照せずに、「eotm_dyn」テーブル内の名前の存在を単に評価します。 「eotm_dyn」テーブルが空でない限り、これは常に false を返します。

解決策: テーブルの結合

テーブルを結合して欠落している名前を除外するには、次のようなクエリ:

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
        (
        SELECT  null 
        FROM    eotm_dyn d
        WHERE   d.employeeID = e.id
        )
ログイン後にコピー

この変更されたクエリでは、LEFT JOIN が暗黙的に共通の「employeeID」フィールドに基づく「employees」テーブルと「eotm_dyn」テーブル。次に、WHERE 句は NOT EXISTS を使用して、名前 (または従業員 ID) が「eotm_dyn」テーブルに存在しない従業員レコードをフィルタリングします。

代替アプローチ: LEFT JOIN と NULL 値のフィルタリング

あるいは、LEFT JOIN を使用して NULL 値をフィルタリングして除外することもできます。

SELECT  *
FROM    employees e
LEFT JOIN
        eotm_dyn d ON e.employeeID = d.employeeID
WHERE   d.name IS NULL
ログイン後にコピー

このアプローチは NOT EXISTS を使用するよりも効率が悪いかもしれませんが、欠落したデータを取得する簡単な方法を提供します。

以上がSQL を使用して欠落している従業員レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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