读书人

not in运行和预计的结果不一样解决思路

发布时间: 2012-01-19 20:57:58 作者: rapoo

not in运行和预计的结果不一样
我首先导入了两个表yy和表js,有相同的列bh,其中表yy的bh列有一些表js的bh列中没有的数据,现在想跳出这些yy表有但js表没有的数据,语言如下
SELECT *
FROM yy
WHERE bh not in(select bh from js)
ORDER BY bh;
但运行后一行数据也没有,为什么?表yy的bh列数据有的重复,表js的bh列的数据不重复.我觉得应该与这个没关系吧

[解决办法]
表yy的bh列数据有的重复,表js的bh列的数据不重复.?


要YY表BH列的数据在JS表的BH列里没有才能查出来呢,你只是重复,但在JS表的BH列里还是有相应的记录啥。
[解决办法]

用判断真假方式
select * from yy where not exists(select 1 from js where bh=yy.bh) order by hb
[解决办法]
SELECT *
FROM yy
WHERE bh not in(select bh from js WHERE bh IS NOT NULL) /*加上NOT NULL*/
ORDER BY bh

----或者
SELECT DISTINCT a.*
FROM yy as a
LEFT JOIN js as b on a.bh = b.bh
WHERE b.bh IS NULL
ORDER BY a.bh

[解决办法]
原因就是bb表中有空值,上面的回复真的是太好拉

读书人网 >SQL Server

热点推荐