首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

not in 的一个有关问题

2013-07-16 
not in 的一个问题--SM_YCDXDETAIL 无2013070450记录select * from JSJD_N_YONGCHANG whereJSJD_N_YONGCHA

not in 的一个问题


  --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条记录




[解决办法]
网上搜三值逻辑,这是not in 和 not exist的区别
[解决办法]
这串SQL的逻辑不一样吧

第一串SELECT是先查询JSJD_N_YONGCHANG.guid 不存在于SM_YCDXDETAIL.FSourceGUID
并且 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'

热点排行