不存在与不存在之间的区别

时间:2014-01-22 14:40:53

标签: oracle plsql

请有人解释原因

select count(*) from employees where employee_id not in (select manager_id from employees)

返回0

当显然有一些员工也是经理时。

我正在使用HR模式。

2 个答案:

答案 0 :(得分:1)

基于我建议您使用的查询     不存在,因为它提供了BOOLEAN结果,提高了性能。

SELECT COUNT(*)
FROM employees
WHERE NOT EXISTS
  (SELECT employee_id
  FROM employees
  WHERE type = 'manager' -- or however you differentiate
    -- employees and managers
  );

答案 1 :(得分:0)

基于此,您似乎试图将employee_idmanager_id相关联,这可能与其不同。

相反,您可以使用其他一些标准来查询经理的匹配employee_id值,以识别employees表中的经理。

 SELECT COUNT(*)
 FROM employees
 WHERE employee_id NOT IN
 (
      SELECT employee_id
      FROM employees
      WHERE type = 'manager'    -- or however you differentiate
                                -- employees and managers 
 )