2012-01-18 38 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