2011-04-25 7 views
1

typeというフィールドを持つテーブルがあります。このテーブルでは、さまざまな行が3つあります。123です。複数のクエリを1つのクエリで選択できますか?

今、私は3をまったく気にしません。どれくらいの行があるかを、type = 1type = 2で計算する必要があります。私はこのように、2つのクエリでこれをやっている:

Query1を: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

+0

単一のクエリでそれを行う「簡単な」方法は、2つのカウントが別々の行として返されるため、それらを抽出するために追加のクライアントコードが必要です。他の答えは、クライアントにとってより簡単になるが、おそらくサーバー上では効率が悪いという回答を単一の行として提供することができます。 – Neil

答えて

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') 
関連する問題