2010-09-24 15 views
9

Die Frage ist einfach: Ich möchte tun:Wie SUM() mehrere Unterabfragen Zeilen in MySQL?

SELECT SUM ((... eine Unterabfrage, die mehrere Zeilen mit einem einzigen int-Wert zurückgibt ...)) AS gesamt;

Wie würde ich das tun? Ich bekomme eine Fehlermeldung, dass die Unterabfrage mehr als eine Zeile zurückgibt. Ich muss es in einer Unterabfrage haben.

Antwort

1

Konnten Sie nicht einfach die Aggregation innerhalb der Unterabfrage tun?

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

(Ungeprüfte!)

+0

Nicht, weil ich eine GROUP BY verwende und es daher zu viele Zeilen SUMMIERT. – Tower

12

Hier ist ein Ansatz, der für Sie arbeiten soll:

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

Und hier sind ein spezielles Dummy Beispiel den Ansatz in Aktion zu zeigen:

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