我有一张桌子,想要计算值的外观(没有总和)
ID status
============
1 2
2 3
3 1
4 1
5 1
6 2
我需要以下结果:
status_1 status_2 status_3 status_4
===================================
3 2 1 0
我可以使用单个SQL语句执行此操作吗?
答案 0 :(得分:2)
select
sum(if(status=1,1,0)) as status_1,
sum(if(status=2,1,0)) as status_2,
sum(if(status=3,1,0)) as status_3,
sum(if(status=4,1,0)) as status_4
from foo
答案 1 :(得分:0)
使用带有计数功能的组查询:
select status, count(status)
from tablename
group by status
答案 2 :(得分:0)
Select
sum(case status When 1 Then 1 End) status1,
sum(case status When 2 Then 1 End) status2,
sum(case status When 3 Then 1 End) status3,
sum(case status When 4 Then 1 End) status4,
etc.
From table
答案 3 :(得分:0)
select count(status) where status = x
会产生单一状态的计数。
也许你可以嵌套这个陈述,但这可能效率低下。
编辑: Group By是要走的路。见其他答案。
答案 4 :(得分:0)
重要的是要注意,您所询问的内容会暗示代码修改为支持的状态更改。我认为将结果分成几行可能会更好。 这个可以在几行中给你相同的结果:
SELECT COUNT(DISTINCT status) FROM mytable;
因此,您可以在没有查询修改的情况下迭代漏洞时间。希望有所帮助
答案 5 :(得分:0)
尝试这个会帮助你
select status, count(*) from tablename
group by status