MySQL:按类别计算项目

时间:2012-08-13 12:59:28

标签: mysql sql timestamp counter minimum

我创建了一个根据类别保存项目的表:

+------------+---------------------+------+-----+-------------------+----------------+
| 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无效,因为这是一个滑动窗口数据结构,意味着第一个项目已被删除。

2 个答案:

答案 0 :(得分:2)

显然,删除记录时需要保留一个单独的表。您的表格应该总结类别并包含字段:

  • 类别首次开始时间
  • 类别中的项目总数

等等。

当您要删除时,您需要更新此表。通常,我更喜欢使用存储过程来处理数据库维护,因此可以将此代码添加到存储过程中。其他人更喜欢触发器,因此您可以使用删除触发器执行相同的操作。

答案 1 :(得分:0)

尝试使用SELECT count(id) FROM table GROUP BY category