如何使用SQL查询在具有相似名称的数据库中加入一组表?

时间:2014-10-01 20:06:23

标签: mysql sql

例如,我有一个名为db的数据库,其中有100个表分别称为ta_1 ... ta_100。每个表格都有两列id(int)val(int)

  1. 如果我想得到val的整体平均值,我该怎么办?
  2. 如果我想得到一个表,结果有两列:tablename(String)和mean(float),我该怎么办?

1 个答案:

答案 0 :(得分:2)

不言而喻,您不应该以这种方式设置数据库。有许多解决方案,从简单但平凡到坚硬但有用。

在某些时候,您必须创建一个表列表,并准备一个将它们合并在一起的语句。使用数据库视图复制和过去将是一个良好的开端:

create view GlobalView (
    tabname varchar(10),
    id int,
    val int)
as
   select 'ta_1', id, val from ta_1
UNION ALL
   select 'ta_2', id, val from ta_2
UNION ALL
   select 'ta_3', id, val from ta_3
UNION ALL
   .....
UNION ALL
   select 'ta_100', id, val from ta_100

然后,您只需运行选择:

select avg(1.0 * val) as mean
from GlobalView

另一种方法是创建一个动态查询,您可以从外部程序调用,也可以使用“动态SQL”调用