0

カテゴリに従ってアイテムを保持するテーブルを作成しました。

+------------+---------------------+------+-----+-------------------+----------------+
| 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              |                |
+------------+---------------------+------+-----+-------------------+----------------+

古いデータはスライディング ウィンドウ手法Nを使用して削除されます。つまり、各カテゴリの最後の項目のみがテーブルに保持されます。

カテゴリごとのアイテムの総数と、カテゴリ内の最初のアイテムのタイムスタンプを追跡するにはどうすればよいですか?

編集-元のテーブルCOUNTMINは機能しません。これは、最初の項目が既に削除されていることを意味するスライディング ウィンドウ データ構造であるためです。

4

2 に答える 2

2

明らかに、レコードを削除するときは別のテーブルを保持する必要があります。表には、カテゴリを要約し、次のフィールドを含める必要があります。

  • カテゴリの最初の開始時間
  • カテゴリ内のアイテムの総数

等々。

削除するときは、このテーブルを更新する必要があります。一般に、データベースのメンテナンスを処理するためにストアドプロシージャを使用することを好みます。そのため、このコードをストアドプロシージャに追加できます。他の人はトリガーを好むので、同じことをする削除トリガーを持つことができます。

于 2012-08-13T13:17:19.080 に答える
0

で試してみてくださいSELECT count(id) FROM table GROUP BY category

于 2012-08-13T13:01:48.997 に答える