我创建了一个根据类别保存项目的表:
+------------+---------------------+------+-----+-------------------+----------------+
| 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
个项目保留在表格中。
如何跟踪每个类别的项目总数以及该类别中第一项的时间戳?
编辑 - 原始表格上的COUNT
和MIN
无效,因为这是一个滑动窗口数据结构,意味着第一个项目已被删除。
答案 0 :(得分:2)
显然,删除记录时需要保留一个单独的表。您的表格应该总结类别并包含字段:
等等。
当您要删除时,您需要更新此表。通常,我更喜欢使用存储过程来处理数据库维护,因此可以将此代码添加到存储过程中。其他人更喜欢触发器,因此您可以使用删除触发器执行相同的操作。
答案 1 :(得分:0)
尝试使用SELECT count(id) FROM table GROUP BY category