2011-04-25 93 views
1

我有一个名为type的字段,其中3个不同的行是可能的:1,23我可以在一个查询中选择更多计数吗?

现在,我根本不关心3。我需要计算type = 1type = 2有多少行。我与2个查询这样做,就像这样:

查询1:SELECT COUNT(id) as count FROM users WHERE type='1'
QUERY2:SELECT COUNT(id) as count FROM users WHERE type='2'

我能做到这一点,只有1单查询?如果是这样,我应该还是不?查询将如何查看?

+0

复制? http://stackoverflow.com/questions/2300020/mysql-multiple-counts-in-single-query – Hubro 2011-04-25 19:13:48

+0

在单个查询中“简单”的做法有两个计数作为单独的行返回的缺点,因此您需要额外的客户端代码来提取它们。其他答案设法将答案作为单行提供,这使得客户端更容易,但在服务器上可能效率更低。 – Neil 2011-04-25 19:40:17

回答

10
SELECT type, 
     COUNT(id) AS count 
    FROM users 
WHERE type IN ('1','2') 
GROUP BY type 
3
SELECT type, COUNT(id) AS count 
FROM users 
GROUP BY type 
HAVING type < 3 
-2
SELECT sum(case when type = '1' then 1 else 0 end) as count_for_one, 
     sum(case when type = '2' then 1 else 0 end) as count_for_tow 
FROM users 
WHERE type IN ('1','2') 
-2

如果你想不同的号码,

SELECT SUM(IF(type='1', 1, 0)), SUM(IF(type='2', 1, 0)) 
FROM users WHERE type IN ('1', '2') 
相关问题