创建两张表
create table t_temp01(
       id number,
       num1 number,
       num2 number
);create table t_temp2(
       id number,
       num1 number,
       num2 number
);insert into t_temp01 values('1','1','1');
insert into t_temp01 values('2','2','3');
insert into t_temp01 values('3','3','3');
insert into t_temp01 values('4','4','4');
insert into t_temp01 values('1','3','3');
insert into t_temp2 values('1','3','3');
insert into t_temp2 values('2','1','1');
insert into t_temp2 values('2','1','3');
insert into t_temp2 values('3','4','3');然后查询第一句
select t.id, sum(t.num1),sum(t.num2)
 from t_temp01 t, t_temp2 t2
 group by t.id;
第二句
select t.id, sum(t.num1),sum(t.num2)
 from t_temp01 t
 group by t.id这两句,只是第一句时加了一个表,为什么结果就不一样了?
可不可以说下在这种情况下group by 和 sum是怎么运行的?select t.id, sum(t.num1),sum(t.num2)
 from t_temp01 t, t_temp2 t2
 where t.id=t2.id1
 group by t.id
这样写的时候,查询结果中id为2的值,好像是t.num1加了两次的结果

解决方案 »

  1.   

    使用两张表的时候,进行了表关联,你可以查一下以下语句,就知道为什么结果会是那样了。select t.*,t2.*
    from t_temp01 t, t_temp2 t2 
    where t.id=t2.id1 
      

  2.   

    select t.id, sum(t.num1),sum(t.num2) 
    from t_temp01 t, t_temp2 t2 
    group by t.id; 
    这条语句因为 t_temp2有4条语句,所以t_temp1累加了4次
    例如
    id=1的num1的结果为1+1+1+1+3+3+3+3=16
    id=2的num2的结果为2+2+2+2=12
    其它如此类推select t.id, sum(t.num1),sum(t.num2) 
    from t_temp01 t 
    group by t.id 
    因为只关联一张表,所以只是t_temp01的累加合
    select t.id, sum(t.num1),sum(t.num2) 
    from t_temp01 t, t_temp2 t2 
    where t.id=t2.id 
    group by t.id 
    也是关联了两张表,但有限定了条件t.id=t2.id
    所以是两张表的id相同的累加