--SM_YCDXDETAIL 无2013070450记录
select * from JSJD_N_YONGCHANG where JSJD_N_YONGCHANG.guid='2013070450' -- 1条记录 select FSourceGUID from SM_YCDXDETAIL where FSourceGUID ='2013070450' --0条记录 select * from JSJD_N_YONGCHANG where
JSJD_N_YONGCHANG.guid not in (select FSourceGUID from SM_YCDXDETAIL)
and JSJD_N_YONGCHANG.guid='2013070450'
为什么查不出数据? select * from JSJD_N_YONGCHANG where
not exists(select 1 from SM_YCDXDETAIL where JSJD_N_YONGCHANG.guid = SM_YCDXDETAIL.FSourceGUID)
and JSJD_N_YONGCHANG.guid='2013070450' -- 1条记录
并且 JSJD_N_YONGCHANG.guid='2013070450'这句实际的的意思就是JSJD_N_YONGCHANG.guid='2013070450'并且SM_YCDXDETAIL.FSourceGUID不存在'2013070450'第二串SELECT是JSJD_N_YONGCHANG.guid 不存在于SM_YCDXDETAIL.FSourceGUID并且JSJD_N_YONGCHANG.guid != '2013070450'如果第二串的逻辑是对的话,第一串的SQL查询应该为
select * from JSJD_N_YONGCHANG where
JSJD_N_YONGCHANG.guid not in (select FSourceGUID from SM_YCDXDETAIL)
and JSJD_N_YONGCHANG.guid<>'2013070450'
create table tab2(x2 varchar(10))insert into tab1 select '111' union all select '222'
insert into tab2 select '555' union all select '666'select * from tab1 where guid='222'select * from tab2 where x2='222'
select * from tab1
where tab1.guid not in (select x2 from tab2)
and tab1.guid='222'/*
guid
----------
222(1 row(s) affected)
*/