返回顶部

收藏

NOT IN使用注意事项

更多
下午被一条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
--该片段来自于http://outofmemory.cn

标签:sql,数据库

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. H.E. 发表 2010-01-26 14:21:14 SQL语句查询优化测试
  2. dormy 发表 2013-11-21 02:34:49 JNDI连接数据库
  3. wwek 发表 2014-03-16 06:20:27 NoSQL反模式 – 文档数据库篇
  4. 谢权 发表 2016-02-01 17:23:17 SQL入门练习(三)
  5. 博主 发表 2016-12-02 17:36:11 数据库行列转换
  6. 图表大师 发表 2017-04-05 07:18:04 漫画赏析:Linux 版 SQL Server
  7. OuuYoung 发表 2014-09-18 11:32:10 列出数据库所有表名与列
  8. viviworld 发表 2015-06-05 00:38:00 更好的 SQL 模式的 10 条规则
  9. camnpr@163.com (佚名) 发表 2015-12-22 02:46:39 PHP如何执行SQL文件导入到mysql数据库
  10. 刘莉莉 发表 2016-03-19 14:45:05 SQL应用速查手册 : Chapter2 数据库操作实例
  11. 小码哥 发表 2017-07-06 05:33:49 SQL、NewSQL和NoSQL融合研究与实践
  12. shushenghong@gmail.c 发表 2014-09-15 12:32:14 php连接ms sql数据库的一些问题

发表评论