select count(*) from ac01 a,jc10 b,T_idleness_register c where b.aae116='1' and c.c_no=a.aac001 and c.c_no=b.aac001 and c.C_attestation='200611'
得到的结果数是1674
但在T_idleness_register表中C_attestation='200611'的其实只有1510条,多出的100多记录是怎么来的呢?

解决方案 »

  1.   

    问题在from后面ac01 a,jc10 b,T_idleness_register c
    就如同
    select *
    from a,b
    若表a有3个记录,表b有5个纪录。则结果为15条
    搂住的1674为个表满足where条件的数据的条数的乘积
      

  2.   

    没看出来有错,试试换换位置select count(*) from ac01 a,jc10 b,T_idleness_register c where c.c_no=a.aac001 and c.c_no=b.aac001 and c.C_attestation='200611' and b.aae116='1'你保证c.c_no,a.aac001 ,b.aac001一一对应?
      

  3.   

    proglovercn(冰雪) :
    不是吧,我在WHERE中对A和B加限制条件了?而且我的A中有40万记录,B中有20万记录呢!dawugui(潇洒老乌龟):
    换位置也是一样的
      

  4.   

    笔误:个表-->各表
    这是关于from后逗号的作用的问题。
    如果记不错的的话,今年日本软考FE级别考试的一道选择题就考得这个问题
      

  5.   

    对啊,我加了c.c_no=a.aac001 and c.c_no=b.aac001 那A和B不就应该提取的是对应C中c_no的记录么?
      

  6.   

    有表a:
    date   money
    ---------------------
    2006-01-01 00:00:00.000 10.0000
    2006-01-02 00:00:00.000 15.0000
    2006-01-03 00:00:00.000 30.0000
    2006-01-04 00:00:00.000 15.0000
    2006-01-01 00:00:00.000 NULL表b:
    money   date   fillmoney
    ----------------------------
    20.0000 2006-01-01 00:00:00.000 NULL
    10.0000 2006-01-01 00:00:00.000 NULL
    40.0000 2006-01-01 00:00:00.000 NULL
    有SQL语句:
    select count(*)
    from a,b
    where a.money=15
    and b.money in(20,10)
    结果:
    -------
    4其中a表满足条件的是第2,4条,共2条;b表满足条件的是第1,2条,共2条
    运行结果4=2*2
      

  7.   

    你用:
    select * from ac01 a,jc10 b,T_idleness_register c where b.aae116='1' and c.c_no=a.aac001 and c.c_no=b.aac001 and c.C_attestation='200611'

    select count(*) from ac01 a,jc10 b,T_idleness_register c where b.aae116='1' and c.c_no=a.aac001 and c.c_no=b.aac001 and c.C_attestation='200611'
    得到的结果的条数应该一直吧。
    我也觉得有点奇怪了
      

  8.   

    Select Count(*) 
    From 
           ac01 a
    Inner Join
           T_idleness_register c
    On   c.c_no=a.aac001
    Inner Join
           jc10 b
    On  c.c_no=b.aac001 
    Where b.aae116='1' 
    And c.C_attestation='200611'
      

  9.   

    用这个连接的效果和from ac01 a,jc10 b,T_idleness_register c应该是一样的吧?我用的是ORACLE数据库,很奇怪,用这个Inner Join语句执行不了。
      

  10.   

    楼主,你若要想与T_idleness_register表一样的记录数,用左联接或右联接吧