2010-09-24 73 views
9

问题很简单:我想要做:如何在MySQL中SUM()多个子查询行?

SELECT SUM((...一个子查询,返回具有单个int值的多个行...))AS total;

我该怎么做?我得到一个错误,说该子查询返回多行。我需要在一个子查询中。

回答

1

难道你不能只是在子集内做聚合吗?

SELECT 
    (SELECT SUM(...) ...) AS total, 
    ... 

(未经测试!)

+0

不是因为我正在使用GROUP BY,所以SUM数量太多。 – Tower 2010-09-25 17:45:31

12

下面是应为你工作的方法:

SELECT SUM(column_alias) 
FROM (select ... as column_alias from ...) as table_alias 

而且这里有一个具体的虚拟实例说明在行动的办法:

select sum(int_val) 
from (
    select 1 as int_val 
    union 
    select 2 as int_val 
    union 
    select 3 as int_val 
) as sub;