2011-12-09 98 views
0

tblticket簡化SQL查詢到SQL語句

ID發佈狀態
1測試1
2測試2
3測試3

我想找到指望基於狀態1, 2,3等

我寫了3條sql語句如下

從票SELECT COUNT(*)其中,從票狀態= 1個
SELECT COUNT(*)其中,從票狀態= 2
SELECT COUNT(*),其中狀態= 3

任何方式來簡化成單個此查詢

回答

4

簡單的答案是

select count(*), status 
from ticket 
group by status 

然而,這給了不同的結果,如果你有一個狀態沒有行,因爲行爲記錄在這裏:Does COUNT(*) always return a result?

假設只有3個狀態值,你可以這樣做:

select count(t.status), s.status 
from 
    (SELECT 1 AS status UNION ALL SELECT 2 UNION ALL SELECT 3) s 
    LEFT JOIN 
    ticket t ON s.status = t.status 
group by 
    s.status 

..或用一個單獨的狀態查找表:

select count(t.status), s.status 
from 
    (SELECT DISTINCT status FROM status) s 
    LEFT JOIN 
    ticket t ON s.status = t.status 
group by 
    s.status 
+0

哈,由0:20有我!爆炸我的緩慢連接:) – Yuck

3
SELECT status, COUNT(*) 
FROM tblticket 
GROUP BY status 

如果你真的只希望這三個狀態,你也可以這樣做:

SELECT status, COUNT(*) 
FROM tblticket 
WHERE status IN (1, 2, 3) 
GROUP BY status