首页 >数据库 >mysql教程 >NOT IN使用注意事项

NOT IN使用注意事项

WBOY
WBOY原创
2016-06-07 14:55:021385浏览

无详细内容 无 下午被一条SQL折磨了select EMP_ID,EMP_NUM,NAME from employee WHERE emp_id in ( select distinct E.emp_id from EMPLOYEE E INNER JOIN PROJECT_EMPLOYEE pe on e.emp_id = pe.emp_id INNER JOIN PROJECT p on pe.pro_id = p.pro_id where p

63b9e1214f15339a825ad2f9dda54dbb 11da01c6148ec3ec20c6fdc9adc31f96
下午被一条SQL折磨了
select EMP_ID,EMP_NUM,NAME
       from employee 
       WHERE 
       emp_id in
      (
       select  distinct E.emp_id
    from EMPLOYEE E 
    INNER JOIN PROJECT_EMPLOYEE pe on e.emp_id = pe.emp_id
    INNER JOIN PROJECT p on pe.pro_id = p.pro_id
    where pe.pro_id ='B49CBE19481447A68445461E7BE02B13'
 );//3条数据
因为业务上有变更,需要在此SQL基础上加上一些其他限制,修改后的SQL:
select EMP_ID,EMP_NUM,NAME
       from employee 
       WHERE 
       emp_id in
      (
       select  distinct E.emp_id
    from EMPLOYEE E 
    INNER JOIN PROJECT_EMPLOYEE pe on e.emp_id = pe.emp_id
    INNER JOIN PROJECT p on pe.pro_id = p.pro_id
    where pe.pro_id ='B49CBE19481447A68445461E7BE02B13'
    and e.emp_id not  in (select s.emp_id from salesteam s )
   );//0条数据,把not in 改成in有1条数据
纠结很久,发现是因为not in 后面的查询条件select s.emp_id from salesteam s所返回的数据中存在null的原因

解决办法就是将not in的子查询中加上is not null的条件
select s.emp_id from salesteam s where s.emp_id is not null
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn