2012-11-13 64 views
4

我需要什麼(使用臨時表或視圖得到的是這樣):替代臨時表

numcasos valcount1 valcount2 
-------- --------- ----------- 
     0   2   1 
     1   1   2 
     2  (NULL)  (NULL) 
     3  (NULL)   1 
     4   1  (NULL) 
     5  (NULL)  (NULL) 
     6  (NULL)  (NULL) 
     7  (NULL)  (NULL) 
     8  (NULL)  (NULL) 
     9  (NULL)  (NULL) 
     10  (NULL)  (NULL) 

這是一個例子,因爲我需要它300+ valcounts。 MySQL的:

CREATE TEMPORARY TABLE sumnum1 
SELECT numos.num1 AS num1, 
COUNT(*) AS valcount1  
FROM `numos` 
GROUP BY numos.num1 ; 

CREATE TEMPORARY TABLE sumnum2 
SELECT numos.num2 AS num2, 
COUNT(*) AS valcount2  
FROM `numos` 
GROUP BY numos.num2 ; 



SELECT casos.`numcasos` AS numcasos, 
sumnum1.valcount1 AS valcount1, 
sumnum2.valcount2 AS valcount2 

FROM (casos 
LEFT JOIN sumnum1 
ON (casos.`numcasos`= sumnum1.num1) 
LEFT JOIN sumnum2 
ON (casos.numcasos = sumnum2.num2)) 

什麼,我想是讓子查詢具有相同的結果,而不是,但我得到的錯誤信息:

Subquery returns more than 1 row 

是否有可能在MySQL?

+0

它應該是可能的。發佈失敗的查詢也是有意義的。 –

回答

4

嘗試像

SELECT casos.numcasos AS numcasos, 
sumnum1.valcount1 AS valcount1, 
sumnum2.valcount2 AS valcount2 
FROM casos 
LEFT JOIN 
(
    SELECT numos.num1 AS num1, COUNT(*) AS valcount1 
    FROM numos GROUP BY numos.num1 
)sumnum1 ON (casos.`numcasos`= sumnum1.num1) 
LEFT JOIN 
(
    SELECT numos.num2 AS num2, COUNT(*) AS valcount2 
    FROM numos GROUP BY numos.num2 
)sumnum2 ON (casos.numcasos = sumnum2.num2)) 
+0

這正是我需要的,完美的作品。 @Marc,抱歉,但我沒有足夠的聲譽投票你的答案。 – oportatil

+0

很高興幫助:) – Marc