私はこれで正しい方向に進んでいると思います...私の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
。