create view TEMP as Select  src as src, dst as dst, sum(gtp_bytes) as gtp_bytes From t1  where (  (  dst = -2067090979 )) group by src,dst 
        union Select  src as src, dst as dst,  sum(gtp_bytes) as gtp_bytes From t1  where (  (  dst = -2067090979 )) group by src,dst  
union Select  src as src, dst as dst, sum(gtp_bytes) as gtp_bytes From t1  where (  (  dst = -2067090979 )) group by src,dst  执行这个SQL语句建立了一个视图
然后分别执行
select  gtp_bytes as gtp_bytes from TEMP  group by src,dst
select  sum(gtp_bytes) as gtp_bytes from TEMP  group by src,dst
这两个语句得到的查询结果不同,这是为什么
按我的理解在创建视图的时候已经做了sum的汇聚

解决方案 »

  1.   

    select gtp_bytes as gtp_bytes from TEMP group by src,dst
    不是标准的SQL语句
      

  2.   

    union 改成union all试试. ^^
      

  3.   

    你的语句非常奇怪,三个完全相同的 SELECT然后做UNION, 其效果和一个没什么两样,反而速度慢。create view TEMP as 
    Select  src as src, dst as dst, sum(gtp_bytes) as gtp_bytes 
    From t1  where (  (  dst = -2067090979 )) 
    group by src,dst  
    union 
    Select  src as src, dst as dst, sum(gtp_bytes) as gtp_bytes 
    From t1  where (  (  dst = -2067090979 )) 
    group by src,dst 
    union 
    Select  src as src, dst as dst, sum(gtp_bytes) as gtp_bytes 
    From t1  where (  (  dst = -2067090979 )) 
    group by src,dst 
    等效于
    create view TEMP as 
    Select  src as src, dst as dst, sum(gtp_bytes) as gtp_bytes 
    From t1  where (  (  dst = -2067090979 )) 
    group by src,dst  
      

  4.   


    不好意思,打错了,表名是不一样的,应该是
    create view TEMP as  
    Select src as src, dst as dst, sum(gtp_bytes) as gtp_bytes  
    From t1 where ( ( dst = -2067090979 ))  
    group by src,dst   
    union  
    Select src as src, dst as dst, sum(gtp_bytes) as gtp_bytes  
    From t2 where ( ( dst = -2067090979 ))  
    group by src,dst  
    union  
    Select src as src, dst as dst, sum(gtp_bytes) as gtp_bytes  
    From t3 where ( ( dst = -2067090979 ))  
    group by src,dst