select sum(average) from qy_csb_1
select sum(average) from qy_csb_2
select sum(average) from qy_csb_3
...
select sum(average) from qy_csb_n
union 是行不通的,因为我的表名可能随着时间变多, 循环感觉可能行得通,也搜索了相关资料,没太理解。。。
用 java 循环来做也是可行的,但是我并不想用这种方式,可能自己有点钻牛角尖了。。
希望给点思路,谢谢
1
GroupF OP 排版好像有点问题
select sum(average) from qy_csb_1 select sum(average) from qy_csb_2 select sum(average) from qy_csb_3 ... select sum(average) from qy_csb_n |
2
ElmerZhang 2020-11-12 11:20:31 +08:00
弄个 qy_csb_table_nums 表,里面就一列,存当前最新 qy_csb_n 的 n 。
每次建新表时更新一下,查询时先查这个表拿到 n 。 |
3
lff0305 2020-11-12 11:21:13 +08:00 1
从 information_schema.tables 查询出来你到底有哪些 qy_csb 表
然后拼出来 SQL,执行。 一条 SQL 应该不行,可以用存储过程或者函数;或者在 Java 里面做 |
4
ElmerZhang 2020-11-12 11:23:44 +08:00 1
你这个新数据一直往新表里写的方式有点类似于按时间分表,这样的表名用日期好一些,比如 qy_csb_202011 或者 qy_csb_20201112 之类的,清历史数据也方便,而且根据时间就知道最新的表是哪个了。
|
5
GroupF OP @ElmerZhang 是的是的 ,我用这个”information_schema.tables“能模糊搜索到自己等要关联的表 ,然后我还要做一个统计,比如 10 月总量和 ,11 月总量和 ,单个我能用 sql 算出来,但是想要一个 sql 执行出来,这里给卡掉了
|
6
GroupF OP @lff0305 嗯,谢谢,我看了下存储过程感觉是可以的,但是 我这个是需要实时的。。java 做可能是最好的了
但是函数上来使用的话,我查找并分析了下,我现有的组合不起来这样的组合函数、谢谢,这个选择 java 来做好了,表为什么这样是因为前人设计的每个公司一张表。。。 |
7
vone 2020-11-12 14:37:27 +08:00 1
楼上说的拼接 sql 和使用 Java 循环的方案都只是从业务和 web 开发上来考虑的,只能解决眼前的问题。
你的这个问题如果想彻底解决需要从数据上下手。 从数据库角度来说,你应该建一个汇总表,然后做一个数据同步 JOB (子表增多时修改数据同步代码)。 每天凌晨(频率看业务需求)同步一次各个子表的数据到汇总表,然后后就可以通过汇总表实现你的业务需求。 |