多个表的计数总和

时间:2015-06-06 13:41:35

标签: mysql

我有十几个具有相同结构的表。他们的所有名字都与question_20%相符。每个表都有一个名为loaded的索引列,其值可以为01

我想计算所有loaded = 1的记录。如果我只有一张桌子,我会跑select count(*) from question_2015 where loaded = 1

我是否可以运行查询INFORMATION_SCHEMA.TABLES中的表,对所有这些计数求和,并生成单个输出?

1 个答案:

答案 0 :(得分:1)

评论太长了。

您可以使用动态SQL执行所需操作。我相信有人会解决这个问题。

但是,您的数据结构存在问题。拥有多个并行表通常是一个非常糟糕的主意。 SQL支持非常大的表,因此从查询(正如您现在正在学习)和可维护性的角度来看,将一个表中的所有信息放在一起是非常方便的。

SQL提供了索引和分区方案,用于解决大型表上的性能问题。

有时,需要单独的表,以满足特定的系统要求。如果是这样,那么应该有一个视图可以组合所有表:

create view v_tables as
    select t1.*, 'table1' as which from table1 union all
    select t2.*, 'table2' as which from table2 union all
    . . .

如果你有这样的观点,那么你的查询就是:

select which, count(*)
from v_tables
where loaded = 1
group by which;