日期:2014-05-18  浏览次数:20601 次

迷惑的not in问题

select distinct a.kcmc from a left OUTER JOIN b on a.ID=b.CoreID

where kcmc not in
(select distinct kcmc from a right OUTER JOIN b on a.ID=b.CoreID ) 

a表中包含所有的课程名称,b表中包含今年的课程名称,我要取的数据为历年的课程名称,所以我采用以上方法,奇怪的是结果总为空,但是将上面的语句分开执行,即如果不包含not in那个条件上面取到的值为330条,而后面那个select语句取到150条记录,而且我也查看了,里面数据正确,也确实存在不同的课程,但是一起执行确没有值了。上面代码是我简化后的,但是问题同样存在,请高手帮忙找找问题原因。

------解决方案--------------------
可能是因为select distinct kcmc from a right OUTER JOIN b on a.ID=b.CoreID 有null值


select distinct a.kcmc from a left OUTER JOIN b on a.ID=b.CoreID where a.kcmc is null

select distinct kcmc from a right OUTER JOIN b on a.ID=b.CoreID
where kcmc is null
看一下
------解决方案--------------------
SQL code

--同意楼上的说法
select   distinct   kcmc     
from   a     right   
OUTER   JOIN   b   on   a.ID=b.CoreID
可能有NULL值!

------解决方案--------------------
以前碰到过.
Null值的问题;
------解决方案--------------------
如果有NULL,加多个条件

and col is not null