例如,我有一个名为db的数据库,其中有100个表分别称为ta_1
... ta_100
。每个表格都有两列id(int)
和val(int)
。
答案 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”调用