二个表,一个表是导入的身份证号,有86条,另一个是个人信息基本表,有身份证号、id、姓名等信息,有1w多条,这二个表应该有85条重复。select * from jj where  exists (select aac002 from ac01)
可以查询到86条信息
select * from ac01 where aac002  in (select ff from jj) order by aac002
可以查到85条为什么查询的结果不一致呢?

解决方案 »

  1.   

    1,select * from jj where exists (select aac002 from ac01)结果是不一致的。exists 语句 你的外表jj跟里面的ac01没有任何关联系关系,所以exists是永远为fure的。你查询的是jj表的所有数据。2,select * from ac01 where aac002 in (select ff from jj) order by aac002
     你的ac01表通过字段aac002 与jj表的ff字段进行关联,所以查询的是ac01表的一部分数据。
      

  2.   

    而且比较奇怪的是,你2条sql语句查询的是2张不同的表,这样的数据 有可比较性吗?
      

  3.   

    呵呵,是比较奇怪。这两条sql语句语义上完全不同。
      

  4.   

    select * from jj where exists (select aac002 from ac01)
    我一直以为这条语句可以把二个表中重复的找出来。。呵呵