Mysql 如何在100个表中选择总和?

Mysql 如何在100个表中选择总和?,mysql,select,Mysql,Select,不幸的是,我已经在大约100个表中分布了一些数据,而且我没有时间重新组织它,所以我很好奇如何在这么多的表中执行select sum(列名称) 我已经找到了如何在两个表之间求和的示例,但从未找到过100的示例 有人知道怎么做吗 附录:使用非常大的命令会导致“内存耗尽”错误。有没有一种方法可以使用LIKE来实现这一点?这将是一个很大的查询,但类似这样的方法可以实现: SELECT SUM(col) FROM ( SELECT col FROM table1 UNION ALL SELE

不幸的是,我已经在大约100个表中分布了一些数据,而且我没有时间重新组织它,所以我很好奇如何在这么多的表中执行select sum(列名称)

我已经找到了如何在两个表之间求和的示例,但从未找到过100的示例

有人知道怎么做吗



附录:使用非常大的命令会导致“内存耗尽”错误。有没有一种方法可以使用LIKE来实现这一点?

这将是一个很大的查询,但类似这样的方法可以实现:

SELECT SUM(col) FROM (
  SELECT col FROM table1
  UNION ALL
  SELECT col FROM table2
  UNION ALL
  SELECT col FROM table3
  ...
  SELECT col FROM table100
) a

我想说,最简单的方法是对要求和的值进行大量的选择(每个表一个),然后在该值的并集上求和

比如:

SELECT SUM(VALUE) FROM (
            select 1 VALUE 
            UNION
            select 2 VALUE
            UNION
            select 3 VALUE) as DATA

当然,selects将从每个表中选择一列,而不仅仅是像这样的整数,但您得到了这样的想法…

您似乎专注于
like
,但是
like
是用于
WHERE
子句,而不是选择要从中选择的表。如果一次从所有表中进行选择对于您的系统来说太难处理,那么显而易见的解决方案是单独查询每个表,然后使用perl/php/other脚本将结果相加。

您可以执行以下操作:

select sum(sumcol) FROM (
    select sum(col) as sumcol from table1
    union all
    select sum(col) as sumcol from table2
    union all
    select sum(col) as sumcol from table3
    ...
    union all
    select sum(col) as sumcol from table100
);

当您以联合部分进行汇总时,这样做的内存消耗也要少得多。

如果我没有每个表名的列表,该怎么办?我有一个模式可以在类似的表达式中使用。哦,在为所有表生成一个完整的命令并尝试之后,我遇到了一个内存耗尽的错误。@fubarts您可以从
信息\u模式
中获取表名,然后使用查询结果构建SQL。i、 e.
SELECT table\u name FROM INFORMATION\u SCHEMA.tables,其中table\u SCHEMA='myschema'和table\u name(如'%xyz')
i得到错误“每个派生表都必须有自己的别名”@fubarts-通过添加“a”更正了我的答案中的错误最后,像SQL这样广泛使用的语言怎么可能不允许这么简单和有用的东西呢?因为任何规范化的数据库都不需要这样做。