存在しない場所で*を選択 質問する

存在しない場所で*を選択 質問する

私はこれで正しい方向に進んでいると思います...私のSQLは最高ではないのでご容赦ください

あるテーブルから、別のテーブルに存在しない特定のセルをすべて選択するためにデータベースをクエリしようとしています。これだけでは意味がありませんが、このコードが役立つことを願っています。

SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)

つまり、基本的に、従業員とその詳細のリストを含むテーブルが 1 つあります。次に、名前など、その他の詳細を含む別のテーブルがあります。名前が eotm_dyn テーブルにない場合、つまりエントリがない場合は、その名前が誰であるかを正確に確認し、言い換えると、何が欠けているかを正確に確認したいと思います。

上記のクエリは何も返しませんが、20 個ほどの名前が欠落していることがわかっているので、明らかに正しく実行できていません。

誰か助けてくれませんか?

ベストアンサー1

クエリでテーブルを結合しませんでした。

元のクエリは、 にレコードがまったく存在しない場合を除いて、常に何も返しません。レコードeotm_dynがまったく存在しない場合は、すべてが返されます。

これらのテーブルを で結合する必要があると仮定するとemployeeID、次を使用します。

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
        (
        SELECT  null 
        FROM    eotm_dyn d
        WHERE   d.employeeID = e.id
        )

これらのテーブルをキーワードで結合しLEFT JOIN、 を除外することもできますNULLが、 を使用するよりも効率が低くなる可能性がありますNOT EXISTS

おすすめ記事