2017-10-06 71 views
3

這應該很容易,但我還沒有找到答案。我有一個正在運行一個計數的查詢,並且我想在查詢中將其分組到State = 1和State <> 1並且爲每個組計算總和。MySQL組通過查詢X或不是X

SELECT count(`id_job`) as count, `state` 
FROM job_table 
GROUP BY `state`; 

回答

3

您可以通過它也查詢布爾表達式和組:

SELECT state = 1, COUNT(*) 
FROM  job_table 
GROUP BY state = 1 
+0

一旦我包含了一些其他查詢要求,這個效果最好。 – Richard

0

試試這個

SELECT SUM(CASE WHEN State=1 THEN 1 END) as count1, 
     SUM(CASE WHEN State<>1 THEN 1 END) as count2, 
     State 
FROM job_table 
GROUP BY state 
1
SELECT count(id_job) as count,state FROM job_table 
    GROUP BY case when state = 1 then 1 else 0 
1

在MySQL中,你可以很容易地把這些成列:

select sum(state = 1) as state_1, 
     sum(state <> 1) as state_2 
from job_table; 

如果state可以是NULL,那麼您想要小心一點。第二個條件更安全,因爲:

select sum(state = 1) as state_1, 
     sum(not state <=> 1) as state_2 
from job_table;