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

时间:2011-06-17 15:21:58

标签: mysql select

遗憾的是,我已经在大约100个表中传播了一些数据,而且我没有时间重新组织它,所以我很好奇我如何在这么多表中执行选择总和(column_name)。

我找到了如何对2个表进行求和的示例,但绝不是100个示例。

有人知道吗?


附录:使用非常大的命令导致“内存耗尽”错误。有没有办法用LIKE做到这一点?

4 个答案:

答案 0 :(得分:0)

这将是一个大问题,但这样的事情会这样做:

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

答案 1 :(得分:0)

我想说最简单的方法是对你想要求和的值做很多选择(每个表一个),然后对它的并集做一个求和?

类似的东西:

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

当然,选择将从每个表中选择一个列,而不仅仅是这样的整数,但你明白了......

答案 2 :(得分:0)

您似乎对LIKE感到困惑,但LIKE适用于WHERE条款,而不是选择要选择的表格。如果同时从所有表中选择对于您的系统来说太多了,那么显而易见的解决方案是单独查询每个表,然后使用perl / php / other脚本添加结果。

答案 3 :(得分:0)

您可以这样做:

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
);

当您在联合部件中进行总结时,这样做的内存消耗要少得多。