写sql脚本怎样关联查询100张表?

ps:是要写一个纯sql脚本,不用java、python等程序
需要写一个数据库的sql脚本并执行,需要关联100多张表,用uion一个个手写要残废了,怎样才能优雅地写出一个关联100张表的sql查询语句呢?
需要关联的表名为:
beijing201711
beijing201710
beijing201709
beijing201708
beijing201707
beijing201706
beijing201705
beijing201704
beijing201703
beijing201702
beijing201701
shagnhai201711
shagnhai201710
shagnhai201709
shagnhai201708
shagnhai201707
shagnhai201706
shagnhai201705
shagnhai201704
shagnhai201703
shagnhai201702
shagnhai201701
nanjing201711
nanjing201710
nanjing201709
nanjing201708
nanjing201707
nanjing201706
nanjing201705
nanjing201704
nanjing201703
nanjing201702
nanjing201701
......

阅读 7.3k
7 个回答

巧用Excel

所有需要的表存入tables_list之后使用下面的sql就可以生成一个union所有表的sql

select substring_index(group_concat("select * from `",table_name,"` union all" SEPARATOR ' '),'union all',count(1)) sql_text from tables_list;

然后使用文本编辑也是非常简单吧。。所有表列进去,一个批量替换文本就可以了。。

创建一个 记录当前所有表名 的表,里面的字段是这100多个表名,每新建一个表就往这个表新加一行数据
这样关联的sql就可以使用这个表里面的数据拼出来了

为什么不加一列,把这100多个表并成一个表呢?

写存储过程吧,oracle和mysql都支持动态sql

如果数据库设计没问题的话,那就是你理解的逻辑出问题了

从你的数据库表名上来看,这个应该是某些业务的流水分表,你应当根据你的业务逻辑创建查询的时候选择应有的表,比如查询北京的2017年8月的数据,则select * from beijing201708 ,而不是从所有表里面where时间。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题