1. ホーム
  2. mysql

[解決済み] select * where not exists

2022-03-11 09:27:32

質問

これは正しい道を進んでいると思うのですが・・・。私のSQLは最高ではないので、ご容赦ください。

私は、あるテーブルからすべてを選択するためにデータベースを照会しようとしていますが、特定のセルが別のテーブルに存在しません。それは多くの意味をなさないが、私はコードのこの部分を期待しています。

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

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

上記のクエリは何も返しませんが、20人ほどの名前が欠けていることは分かっているので、明らかに間違っていると思います。

どなたか教えてください。

解決方法は?

クエリでテーブルを結合していない。

に全くレコードがない場合を除き、元のクエリは常に何も返しません。 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 .