2012-11-13 59 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