NOT EXISTS 是一個 SQL 語法結構,主要用於子查詢和主查詢之間進行條件判斷。
它用於檢查子查詢是否不返回結果集,如果子查詢沒有返回任何結果,那麼 NOT EXISTS 返回 TRUE,如果子查詢返回了至少一個結果,那麼 NOT EXISTS 返回 FALSE。
NOT EXISTS 的基本語法是 SELECT ... FROM table_name WHERE NOT EXISTS (子查詢),其工作原理如下:
首先執行主查詢(即 SELECT 語句)。
然後將主查詢的每一行結果代入子查詢。
如果子查詢沒有返回結果,那麼 NOT EXISTS 條件為真,該行結果會被包括在最終查詢結果中。
如果子查詢返回了結果,那麼 NOT EXISTS 條件為假,該行結果不會被包括在最終查詢結果中。
例如,假設有一個員工表(employees)和一個部門表(departments),可以使用 NOT EXISTS 來查找那些沒有分配到任何部門的員工:
SELECT employee_id, employee_name
FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM departments d WHERE e.employee_id = d.employee_id);
這個查詢會返回所有那些在 employees 表中存在但在 departments 表中沒有匹配 employee_id 的員工記錄。