当我使用NOT IN运算符时,sql查询返回零

时间:2016-08-05 14:35:18

标签: sql

有两个表

A(ESN_NO,MAKER, HANDSET, MODEL, FLAG, OFFER, STATUS, STATUS_UPDATEd_date) ,             
B(ESN_NO,MAKER, HANDSET, MODEL, FLAG, OFFER, STATUS, STATUS_UPDATEd_date) 

我需要将bau_load表中的数据添加到omh_esn_model_details_new表中而不重复。

我在A表中添加了80,000行。

然后看到我使用IN运算符的公共esn_no;这是查询:

select count(*) 
from A 
where esn_no in (select esn_no from B);

计数为74,000 ---因此大约有6000个esn_no

但是当我使用NOT IN运算符时:

select count(*) 
from B 
where esn_no not in (select esn_no from A);

计数为0

select count(*) 
from A 
where esn_no not in (select esn_no from B);

计数为0

当我使用此查询时

select count(*) 
from A 
where esn_no not in (select esn_no 
                     from A 
                     where esn_no in (select esn_no from B));

计数为6000

所以,我想知道为什么当我使用NOT IN运算符时我没有返回6000?

0 个答案:

没有答案