请问,我的一个系统按日期每天生成一个表(因为每天的数据量都非常庞大),数据结构都是一样的,现在我想对所有表中的同一个字段进行求和,请问该怎么做呢?

解决方案 »

  1.   

    select sum(s) from (
    select sum(col1) as s from table20100601
    union all
    select sum(col1) from table20100602
    union all
    ...
    union all
    select sum(col1) from table20100630
    ) t
      

  2.   

    或者使用MYISAM的MERGE存储引擎。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
      

  4.   


    要求和的字段添加INSERT UPDATE DELETE触发器,向指定表的指定字段更新自身的sum每次只需要一次求和,但是不知道你2W个表怎么把触发器加上!!
      

  5.   

    30多台服务器写一个统计程序,在每个服务器上同时运行,将结果写入指定的位置或者一个程序同时连接30个服务器,并行获取每个服务器的sum,然后再加起来
      

  6.   

    select ((select sum(column)from table1)+(select sum(column)from table2)+...)
      

  7.   

    建个统计表
    在你生成表的那个算法中加个 把上一張表的 sum数 更新到统计表中去。就省去麻烦了
      

  8.   


    谢谢你的回复,包括楼上的各位!不过你们的方法基本都是只能从系统开始开发的时候做起的,我现在是临时出现了这个需求,需要快速统计出已存在的数据,所以不大适用。
    今天上午自己想了方法,用Delphi做了个前台,由于表名是有规律递增的,所有用了个for循环来自动计算,伪代码如下:for cnt:=startdate to enddate do
    begin
        'SELECT SUM(fee) AS total FROM table' + DateTimeToStr(cnt);
        ....
    end;还是谢谢各位的回复,结贴了。