繁体   English   中英

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

[英]How to JOIN a group of tables in a database with similar name using SQL query?

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

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

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

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

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”调用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM