2011-04-25 96 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') 
相關問題