tblticket简化SQL查询到SQL语句
ID发布状态
1测试1
2测试2
3测试3
我想找到指望基于状态1, 2,3等
我写了3条sql语句如下
从票SELECT COUNT(*)其中,从票状态= 1个
SELECT COUNT(*)其中,从票状态= 2
SELECT COUNT(*),其中状态= 3
任何方式来简化成单个此查询
tblticket简化SQL查询到SQL语句
ID发布状态
1测试1
2测试2
3测试3
我想找到指望基于状态1, 2,3等
我写了3条sql语句如下
从票SELECT COUNT(*)其中,从票状态= 1个
SELECT COUNT(*)其中,从票状态= 2
SELECT COUNT(*),其中状态= 3
任何方式来简化成单个此查询
简单的答案是
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
SELECT status, COUNT(*)
FROM tblticket
GROUP BY status
如果你真的只希望这三个状态,你也可以这样做:
SELECT status, COUNT(*)
FROM tblticket
WHERE status IN (1, 2, 3)
GROUP BY status
哈,由0:20有我!爆炸我的缓慢连接:) – Yuck