各位大侠,对于数据库方面我是一个新手,劳烦帮忙,先行谢过。我有两个oracle的数据库,ora1和ora2,我用下面的查询语句进行的查询:select a.id, sum(b.duration) from  ora1 a, ora2 b where a.month_number = 02 and b.month_number = 02 and a.id = b.id group by a.id;还有两个mysql的数据库,my1和my2,其中my1中的数据与ora1的数据完全相同,my2与ora2中的数据也完全相同。
mysql中我用的是这样的查询语句:select a.id, sum(b.duration) from my1 a, my2 b where a.month_number = 02 and b.month_number = 02 and a.id = b.id group by a.id;
现在的问题是,这两个查询语句得到的结果居然完全不同,我想请问是我的查询语句哪里写的不对?还是其它的原因,望高手回答。在线等

解决方案 »

  1.   

    其中my1中的数据与ora1的数据完全相同,my2与ora2中的数据也完全相同。 不可能,请列出表结构,以及说明结果不同。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  2.   

    ora1表结构:
      MONTH_NUMBER    NUMBER(2),
      USER_ID         NUMBER(16),
      NAME            VARCHAR2(80),
      CUSTOMER_ID     NUMBER(16),
      MSISDN          NUMBER(11),
      ID              NUMBER(5),
      
    ora2表结构:  MONTH_NUMBER    NUMBER(2),
      STAT_DATE       NUMBER(8),
      USER_ID         NUMBER(16),
      ID              NUMBER(16),
      OTHER_ASP       NUMBER(4),
      GROUP_CALL_FLAG NUMBER(2),
      OTHER_AREA      NUMBER(7),
      IMEI            VARCHAR2(15),
      CALL_DURATION   NUMBER(8),
      DURATION        NUMBER(8),
      
    my1表结构:  MONTH_NUMBER    int(2),
      USER_ID         bigint(16),
      NAME            varchar(80),
      CUSTOMER_ID     int(16),
      MSISDN          int(11),
      ID              int(5),my2表结构:  MONTH_NUMBER    int(2),
      STAT_DATE       int(8),
      USER_ID         bigint(16),
      ID              bigint(16),
      OTHER_ASP       int(4),
      GROUP_CALL_FLAG int(2),
      OTHER_AREA      int(7),
      IMEI            varchar(15),
      CALL_DURATION   int(8),
      DURATION        int(8),是从mysql中将数据导入到oracle中的,用命令create table as ....
    并且对全表的数据,做过对比,数据是一样的。
    在查询结果中,id是一样的,但是DURATION求出的sum一点都不一样
      

  3.   

    select sum(duration)
    from ora2;select sum(duration)
    from my2;比一下这两个结果一不一样先。select id, sum(duration)
    from ora2
    where month_number = 02
    group by idselect id, sum(duration)
    from my2
    where month_number = 02
    group by id再比这两个,找出一个不一样的ID,然后比这个ID下的记录。 逐步找出问题。
      

  4.   

    首先对您的回贴表示感谢,但是:
    select sum(duration) 
    from ora2; 

    select sum(duration) 
    from my2; 
    的结果是一样的。而且select id, sum(duration) 
    from ora2 
    where month_number = 02 
    group by id 

    select id, sum(duration) 
    from my2 
    where month_number = 02 
    group by id 
    的结果也是一样的。我就不明白了,为什么一起查的时候就不一样了呢?
      

  5.   

    找出一个不一样的ID,然后
    select a.*,b.*
    from ora1 a, ora2 b 
    where a.month_number = 02 and b.month_number = 02 
    and a.id = b.id and a.id=xx;
    select a.*,b.*
    from my1 a, my2 b 
    where a.month_number = 02 and b.month_number = 02 
    and a.id = b.id and a.id=xx;找出差异的记录。
      

  6.   

    楼上的,对于你的回答先行谢过.但是您的方法我用了,两边的数据,确实是一样的,就是不能用关联查询,一用关联查询,两边的结果就出问题了.我想请问一下,mysql和oracle的查询语法是不是不一样呀.因为我发现mysql的查询结果,好像是把数据查了两遍,不知道mysql和oracle的查询语法有何不同.
      

  7.   

    把两个表 a.id = b.id  的类型改为一致 试下, ID int(5) ->  ID bigint(16)