2010-09-24 74 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;