select value from temp_a a
where a.id between 1 and 100
and not exists(select * from temp_b b where a.value=b.value);

这时能查出结果

select value from temp_a a
where a.id between 1 and 100
and a.value not in(select value from temp_b);

此时查出的结果为空.

经过google终于找出原因: 内表(temp_b)有空值. 用not in得到的结果集都为空.以下是结论:

1、对于not exists查询,内表存在空值对查询结果没有影响;对于not in查询,内表存在空值将导致最终的查询结果为空。

2、对于not exists查询,外表存在空值,存在空值的那条记录最终会输出;对于not in查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。

 

相关文章:

  • 2022-12-23
  • 2021-11-23
  • 2021-12-09
  • 2021-10-28
  • 2021-08-16
  • 2021-11-03
  • 2021-10-01
猜你喜欢
  • 2022-12-23
  • 2021-12-09
  • 2021-11-30
  • 2021-10-16
  • 2022-12-23
  • 2021-05-14
  • 2022-12-23
相关资源
相似解决方案