情况是:数据库中有多张结构相同的表,就是每个月生成一张,里面的各个字段都是一样的,就是数据按时间增加。每张表的名称是相近的一时间命名的,如:table201201 这是2012年1月的表。  现在想要做个报表查询一段时间的数据,可能只涉及一张表,也可能很多张表一起查询。怎么搞??

解决方案 »

  1.   

    记得有个union方法来着,具体操作忘了,你也可以建一个临时表用循环把所有表的内容添加进去,对临时表进行操作
      

  2.   

    忘了说了不想用临时表来做
    select   *   from   

    select   *   from   t1 
    union   all 
    select   *   from   t2 
    union   all 
    select   *   from   t3 
    union   all 
    select   *   from   t4 
    )a   where   insert_time   between   ...   and   ...
    这个貌似可以但是我要做到*里面内容太多不会用
      

  3.   

    如果查询条件不太复杂的话,
    可以从拆分查询入手,只在对应时间的表里面查询。
    毕竟查最近的数据会相对多点。union的缺点是数据量大,而且大部分数据可能是很少需要查询。
      

  4.   

    既然是不同的表,union就是首选了
    可以在查询每个表时加where条件后再union,而不是union后再加where条件
    尽量优化条件,从左至右,能排除最多数据的条件放左边
      

  5.   

    corn1的方法不错,把原来的当成明细按照查询或条件进行操作,不过会用union还是很强大的