日期:2014-05-17  浏览次数:20888 次

请问这样的结果是为什么 ?
select count(1) from (select distinct tagcode from mes_tag)--13125条数据
select count(1) from mes_tag--13124条数据

select * from mes_tag a where tagcode in (select tagcode from mes_tag where tagcode=a.tagcode and 
(a.asnm<>asnm or a.ohrid<>ohrid or paraid<>a.paraid or a.begda<>begda or a.endda<>endda or taglt<>a.taglt or pvllfl<>a.pvllfl
or pvlofl<>a.pvlofl or pvhifl<>a.pvhifl or a.pvhhfl<>pvhhfl or a.eulo<>eulo or a.euhi<>euhi or a.tunit<>tunit or decfmt<>a.decfmt or typeid<>a.typeid
or prvid<>a.prvid or sqnm<>a.sqnm or a.tagid<>tagid or prefix<>a.prefix or design<>a.design or plantctrl<>a.plantctrl or lckflg<>a.lckflg or src_scansecs<>a.src_scansecs
or tagid<>a.tagid
))--这个语句查不出数据来,这里边,除了tagcode外,其它的列都设置为or xxx<>a.xxx了。结果一条数据也查不出来。
不应该啊
可能是什么 原因呢?

------解决方案--------------------
探讨
select count(1) from (select distinct tagcode from mes_tag)--13125条数据
select count(1) from mes_tag--13124条数据

------解决方案--------------------
数据中有一条数据它的tagcode为null吧。
可以测试一下select count(tagcode) from mgs_tag;应该是13125条记录。
而select count(tagcode) from msg_tag where tagcode is not null,应该是12124条记录。