2013-03-21 52 views
-2

我的问题是我想在单个查询中获得三个条件的计数。我知道我可以运行多个查询做到这一点,但问题是我需要它在一个查询获取多个条件的计数

我查询我曾尝试是

SELECT COUNT(IF(da <3, da, 0)) AS da1, 
     COUNT(IF(da <2, da, 0)) AS da2, 
     COUNT(IF(da <1, da, 0)) AS da3 
FROM tv 

而其结果是

4 4 4 

但预期结果是

2 1 0 

表内数据存在da列是需要

3 2 1 3 

回答

2
SELECT SUM(IF(rr <3, 1, 0)) AS da1, 
     SUM(IF(rr <2, 1, 0)) AS da2, 
     SUM(IF(rr <1, 1, 0)) AS da3 
FROM tv; 
0

COUNT()GROUP BY使用 - 我认为这可能是你的问题,试图通过`da`分组。

+0

我'组by'尝试,但它给了我错误的输出。 3 X 3矩阵输出。 – 2013-03-21 06:02:18

0

我才发现我的问题,但PSR的解决方案的解决方案也是正确

SELECT * 
FROM (

    SELECT COUNT(da) AS da1 
    FROM tv 
    WHERE da <3 
    ) AS da1, (

    SELECT COUNT(da) AS da2 
    FROM tv 
    WHERE da <2 
    ) AS da2, (

    SELECT COUNT(da) AS da3 
    FROM tv 
    WHERE da <1 
    ) AS da3 
+0

虽然这不是一个查询。 – 2013-03-21 05:54:42

+0

@MarshallHouseHouse子查询。 – 2013-03-21 05:56:29

+0

同样的低效率。 – 2013-03-21 05:57:38