2012-08-13 72 views
0

我已經創建了按類別持有項目表:MySQL的:計數按類別項目

+------------+---------------------+------+-----+-------------------+----------------+ 
| Field  | Type    | Null | Key | Default   | Extra   | 
+------------+---------------------+------+-----+-------------------+----------------+ 
| id   | bigint(20) unsigned | NO | PRI | NULL    | auto_increment | 
| name  | varchar(30)   | YES |  | NULL    |    | 
| category | varchar(30)   | YES | MUL | NULL    |    | 
| timestamp | timestamp   | NO |  | CURRENT_TIMESTAMP |    | 
| data  | mediumblob   | YES |  | NULL    |    | 
+------------+---------------------+------+-----+-------------------+----------------+ 

舊數據使用sliding window technique刪除,這意味着只有在每個類別中的最後一個N項目都保存在桌子。

如何跟蹤每個類別的項目總數以及該類別中第一個項目的時間戳?

編輯 - COUNTMIN原始表上是行不通的,因爲這是一個滑動窗口的數據結構,這意味着第一個項目已被刪除。

+0

你不能創建一個包含計數器和第一個數據的表嗎? – 2012-08-13 13:09:40

+0

我可以。我正在努力填充另一個表的存儲過程。 – 2012-08-13 13:48:07

回答

2

顯然,你需要保持一個單獨的表,當你刪除記錄。你的表應該總結的類別,包括以下字段:

  • 第一類開始時間
  • 項目總數的類別

等。

當您去刪除時,您需要更新此表。通常,我更喜歡使用存儲過程來處理數據庫維護,因此可以將此代碼添加到存儲過程。其他人更喜歡觸發器,所以你可以有一個刪除觸發器來做同樣的事情。

+0

+1這是真的。你能提供一個這樣的程序大綱嗎?我不熟悉存儲過程語法。 – 2012-08-13 13:27:51

0

嘗試SELECT count(id) FROM table GROUP BY category

+0

將無法​​工作 - 請注意,這是一個滑動窗口,因此最舊的項目將被刪除。 – 2012-08-13 13:03:07