如何计算mysql中不同项目的项目数?

时间:2013-10-27 21:49:23

标签: mysql sql

想象一下,有一个名为status的列的表:

status
------
A
A
A
B
C
C
D
D
D

如何计算有多少行有A,有多少行有B等? 这种输出:

A  |B  |C  |D  |E  
------------------
3  |1  |2  |3  |0

对于E = O,这将始终是A,B,C,D和E. 输出应该是一行(因此是1个查询)。

当做一个非常重要的计数时(我的搜索中大多数返回的答案,它确实返回了有多少不同的元素,在这种情况下为4 ...)

2 个答案:

答案 0 :(得分:3)

你只需要分组你的表,​​应用合适的聚合函数:

SELECT   status, COUNT(*)
FROM     my_table
GROUP BY status

sqlfiddle上查看。

如果缺少状态,您可以在应用程序代码中将其视为0。

答案 1 :(得分:2)

将结果放在一行比较笨拙的小组:

Select
    sum(status = 'A') 'A',
    sum(status = 'B') 'B',
    sum(status = 'C') 'C',
    sum(status = 'D') 'D',
    sum(status = 'E') 'E'
From 
    my_table

某些数据库支持pivot,这使得它更好一些。 MySQL不是其中之一。

<强> Example SQLFiddle