2011-12-09 99 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