sql4:  表2在表1中不存在的记录?
sql5:  假设有第三个张表,他的结果就是在表2在表1中存在的记录,
    结果是表1在表三中不存在的记录!    sql5就是表1不在660条记录存在的记录,而sql4就是表1不在1376中存在的记录,你看两个结    果一样吗?

解决方案 »

  1.   

    但是sql4表明了表1的子段1全部在表2中存在,所以楼上说的表3即表1,sql5的结果也应该是0
      

  2.   

    14:39:20 SQL> select * from a;       COL
    ----------
             1
             1
             1
             2
             2
             3
             4
             5
             5
             6已选择10行。已用时间:  00: 00: 00.62
    14:39:38 SQL> select * from b;       COL
    ----------
             1
             2
             3
             4
             5
             6
             8
             8
            10
           100
            12       COL
    ----------
            12已选择12行。已用时间:  00: 00: 00.78
    14:39:42 SQL> select count(col) from a;COUNT(COL)
    ----------
            10已用时间:  00: 00: 00.32
    14:39:51 SQL> select count(col) from b;COUNT(COL)
    ----------
            12已用时间:  00: 00: 00.16
    14:39:57 SQL> select count(col) from b where col in(select col from a);COUNT(COL)
    ----------
             6已用时间:  00: 00: 00.15
    14:40:09 SQL> select count(col) from a where col not in(select col from b);COUNT(COL)
    ----------
             0已用时间:  00: 00: 00.31
    14:40:21 SQL> select count(col) from a where col not in(
    14:40:28   2  select col from b where col in(select col from a));COUNT(COL)
    ----------
             0已用时间:  00: 00: 00.16
    14:40:29 SQL>
      

  3.   

    TO 楼主
    你把第5句的COUNT(*)换成* 看看结果是什么,其中的field1都有哪些,也许是一些奇怪的东东。
      

  4.   

    我猜如果确有24个,那24个field1应该是NULL吧。
      

  5.   

    估计是你的语句有问题。如果table1的字段1没有重复值的话,那就更不对了。
      

  6.   

    Select 子段1 From table1 Where 子段1 Not In(Select 子段1 From table2 Where 子段1 In (select 子段1 From table1));这句话的结果是什么呀,不是叫你试一下吗
      

  7.   

    Select 子段1 From table1 Where 子段1 Not In(Select 子段1 From table2 Where 子段1 In (select 子段1 From table1)); 结果是24条
      

  8.   

    1 test1
    2 test2
    3 84081041
    4 37602722
    5 37602723
    6 37602724
    ……
      

  9.   

    你的SQL1,3,4查出来的数据有矛盾,检查过数据没问题吗
      

  10.   

    看看你的字段值是否有为null的,使用null值在in子句会问题的
      

  11.   

    主要是sql4有错误,sql5查出的24条记录在表2中确实没有
      

  12.   

    Select 子段1 From table1 Where 子段1 Not In(Select 子段1 From table2 Where 子段1 In (select 子段1 From table1));把所有的 子段1 都改成rtrim(子段1) 再执行一次看看
      

  13.   

    知道结果了表2中有null值,我把null值替换掉,sql4和sql5的结果都为24。
    谢谢大家。
      

  14.   

    把sql5的count(子段1)改成 * 看看你是哪24条记录。由sql1和sql3可猜测大概是table2中有24条特殊记录。可能如天下无双说的null值,贴出来让大家看看。