get count of all rows指定不同的where子句

时间:2013-07-26 08:20:23

标签: mysql database

我有一个包含列id的简单表。此列不是主键(PK)。 id的值可以在1到10之间。我想写一个查询,它给出了一个表中所有数字的计数,如下所示:

one   two three four ............
 5     8    9     15 ...........

我知道我可以写一个像select count(*) from table where id = 1这样的查询。但这会使我返回单个数字计数意味着id =1。我需要在单个查询中编写1到10之间所有数字的查询。

2 个答案:

答案 0 :(得分:1)

使用透视

有些事情:

select 
count(case when id= 1 then 1 end) One,
count(case when id= 2 then 1 end) Two,
count(case when id= 3 then 1 end) Three,
count(case when id= 4 then 1 end) Four,
count(case when id= 5 then 1 end) Five,
count(case when id= 6 then 1 end) Six,
count(case when id= 7 then 1 end) Seven,
count(case when id= 8 then 1 end) Eight,
count(case when id= 9 then 1 end) Nine,
count(case when id= 10 then 1 end) Ten
from data;

结果:

ONE TWO  THREE  FOUR    FIVE    SIX SEVEN   EIGHT   NINE    TEN
4   1      0      0       0       0    0      0        0    1

SQLFiddle Demo

没有透视

您可以使用以下内容:

select id, count(*) as Count from data group by id;

结果将显示为:

id, count
1            5 
2            8
3            9
4            15

答案 1 :(得分:0)

此查询可能有用

SELECT 
    COUNT(*) 
FROM [table] 
GROUP BY [column_id] 
HAVING id >= 1 && id <= 10