SQL> select count(*) from smnd_yh;  COUNT(*)
----------
    106324SQL> select count(*) from smnd;  COUNT(*)
----------
    106305说明两表的记录条数相差19条

解决方案 »

  1.   

    select bh from smnd_yh
    minus
    select bh from smnd说明编号不同的有222条
      

  2.   

    方法一只能说明表smnd和表smnd_yh记录数上的差别
    方法二说明表smnd_yh中有222条记录是表smnd中所不存在的
    结合表一可以说明表smnd中含有表smnd_yh中所不含有的bh值最后一个查询没什么意义,应该是
    select bh from smnd
    minus
    select bh from smnd_yh
    两张表的关系反了
      

  3.   

    luxuezhu(卢冲) , zmgowin(隐者(龙祖宗)) :建立表smnd时我是用这个语句的
    create table smnd as 
    select * from smnd_yh
    所以说表smnd的数据都是从smnd_yh里取得的
    记录的不同唯一的解释是表smnd里没有smnd_yh的记录 zmgowin(隐者(龙祖宗)) 的
    /*最后一个查询没什么意义,应该是
    select bh from smnd
    minus
    select bh from smnd_yh
    两张表的关系反了*/不对吧。请再看看。
      

  4.   

    检查你用Create as select这种方法生成的表是否继承了原表的主键信息select * from smnd where bh in ( 
    select distinct bh from smnd_yh
    minus
    select distinct bh from smnd)
    应该改为:select * from smnd_yh where bh in ( 
    select distinct bh from smnd_yh
    minus
    select distinct bh from smnd)
      

  5.   

    有没有可能表smnd_yh有被删除的数据呢,或者更新的数据,如果有这样的数据则就有可能两者会有不对的情况了。
      

  6.   

    检查一下
    smnd表不是用bh列做主键的,有可能是联合主键
      

  7.   

    select * from smnd where bh in (                
    select distinct bh from smnd_yh
    minus
    select distinct bh from smnd)
    --
    你这样当然是空了,smnd_yh的数据减去smnd中的数据后剩下的是那些只在smnd_yh中存在的数据,而你在smnd中查找当然是没有记录。
      

  8.   

    谢谢各位,lialin(阿林) 说得对。更新了一些数据。