2011-06-17 69 views
0

是否可以使用一個查詢來獲得列和所有列本身的總和? 我的意思是,我需要SUM(Result.num)和單獨的Result.num,但我不想使用兩個單獨的查詢來達到目的?想法結果可能是SUM作爲結果中的另一列。 結果可能類似於: COL1 Result.num1,SUM Result.num2,SUM Result.num3,SUM ....mysql總和問題

SELECT SUM(Result.num) 
    FROM (SELECT COUNT(colA) AS num 
      FROM Table1 
     GROUP BY colB) AS Result; 

SELECT Result.num 
    FROM (SELECT COUNT(colA) AS num 
      FROM Table1 
     GROUP BY colB) AS Result; 
+0

預期產出的例子? – 2011-06-17 02:38:23

+0

爲什麼不使用兩個查詢?你希望你的結果如何表現? – 2011-06-17 02:38:47

回答

4

答案是,你會做兩個語句,但你可以將結果返回到一個結果集中。你可以用UNION ALL語句來做到這一點。只需要你的兩個查詢,並在他們之間放置一條UNION ALL聲明。它看起來是這樣的:

SELECT Result.num 
    FROM (SELECT COUNT(colA) AS num 
      FROM Table1 
     GROUP BY colB) AS Result; 
UNION ALL 
SELECT SUM(Result.num) 
    FROM (SELECT COUNT(colA) AS num 
      FROM Table1 
     GROUP BY colB) AS Result; 

我調換了順序,使您的SUM值將在年底,但你可以把它在一開始,如果你想。

+0

+1好的答案,比我能輸出的速度還快。 =) – NullRef 2011-06-17 02:41:29

+0

將MySQL執行子查詢兩次以獲得結果集? – WilliamLou 2011-06-17 02:47:15

+0

該工會將爲工會的每一方執行一次,所以......是 – NullRef 2011-06-17 03:04:20

1

敢肯定你只需要union您查詢

SELECT SUM(Result.num) FROM (SELECT COUNT(colA) AS num FROM Table1 group by colB) AS Result 
union all 
SELECT Result.num FROM (SELECT COUNT(colA) AS num FROM Table1 group by colB) AS Result;