2016-05-17 12 views
2
SELECT COUNT(*) FROM a WHERE year = 2016 && month = 5 && date = 17 && user = 1 
//return 1 row 

SELECT COUNT(*) FROM a WHERE year = 2016 && month = 5 && date = 17 && user = 2 
//return 0 row 

で2カウントクエリをマージし、私は、ユーザー1とユーザー2をチェックする必要があり、利用者1は、1行&ユーザー2必見MySQLの1つのクエリ私は2つのクエリを持って

私の質問は、0行れている必要がありますされます2列と一緒に

リターン1行でこれらの2つのクエリをマージすることも可能//return 1, 0

答えて

4

SELECT SUM(user = 1) as u1, 
     SUM(user = 2) as u2 
FROM a 
WHERE year = 2016 and month = 5 and date = 17 
2

これを試してみてください:

SELECT SUM(user = 1) AS user1, SUM(user = 2) AS user2 
FROM a 
WHERE year = 2016 AND month = 5 AND date = 17 

SELECT句の最初のフィールドはuser = 1個のオカレンスを返しますが、2番目のフィールドはuser = 2のオカレンスを返します。

あなたは条件が真の回数をカウントする条件で sum()を使用することができます
3

はい、これは条件付きの集約と呼ばれている:、

SELECT count(CASE WHEN `user` = 1 THEN 1 END) as usr1_cnt, 
     count(CASE WHEN `user` = 2 THEN 1 END) as usr2_cnt 
FROM a 
WHERE year = 2016 and month = 5 and date = 17 
1

はこれを試して

SELECT 
    (
    SELECT COUNT(*) 
    FROM a 
    WHERE year = 2016 && month = 5 && date = 17 && user = 1 
    ) AS usr1, 
    (
    SELECT COUNT(*) 
    FROM a 
    WHERE year = 2016 && month = 5 && date = 17 && user = 2 
    ) AS usr2 
+0

なぜ選択テーブルから二回?これは1つの選択で行うことができます。 – sagi

0

これを試すことができます:

SELECT * from (
SELECT COUNT(*) count1 FROM a WHERE year = 2016 && month = 5 && date = 17 && user = 1) aa, 
(SELECT COUNT(*) count2 FROM a WHERE year = 2016 && month = 5 && date = 17 && user = 2) bb; 
+0

なぜテーブルから2回選択するのですか?これは1つの選択で行うことができます。 – sagi

+0

しかし、私は2つのテーブルでそれをしたい。 –

+0

これは不要な計算です! – sagi

1

また、このいずれかを試すことができます:

SELECT SUM(user = 1) as user1, 
     SUM(user = 2) as user2 
FROM a 
WHERE year = 2016 and month = 5 and date = 17; 
関連する問題