2012-01-18 42 views
1

如果我有一个看起来像在MySQL中计数一行?

(`id`, `category`, `content`, `post_time`) 

一个表,我想算WHERE(例如)post_time>“1326600000” 我要显示的数据是这样的东西的类别:

categorys['cat_1'] = 4 
categorys['cat_2'] = 2 
categorys['cat_3'] = 1 

我能想到这样做的唯一方法是获取MySQL中的每一行。 创建一个类别列表。 然后做一个计数(id)为cat_count WHERE category ='category_from_list'

有没有更好的方法?

回答

4

有没有更好的方法?

是:

SELECT category, 
     COUNT(1) 
    FROM insert_table_name_here 
WHERE post_time > '1326600000' 
GROUP 
    BY category 
; 

(MySQL的实际上使GROUP BY子句可选—如果同时选择了categoryCOUNT(1),它会推断GROUP BY子句—但你应该包括也无妨。)

+0

哇谢谢。这么简单,但正是我想要的。 对不起,我在SQL =( – Undefined 2012-01-18 00:38:50

+0

@ LeeJacobson:糟糕!)不客气!不要觉得不舒服; SQL是一个巨大的野兽,如果你不想找到你要找的功能真的很难已经不知道它叫什么了。 – ruakh 2012-01-18 00:41:38

0
SELECT `category`, 
     COUNT(`category`) as TotalCount 
FROM `tableName` 
WHERE post_time > '1326600000' 
GROUP BY category