我有一个标记系统,用于标记博客文章等内容。标记存储在一个表中,只包含标记名称和主键。然后我有另一个表格,其中包含正在使用这些标记的对象。
它可能看起来像这样:
_________________________________
| tags |
--------------------------------|
| id | name |
|-------------------------------|
| 1 | Scuba diving |
| 2 | Dancing |
---------------------------------
_________________________________
| tag_objects |
--------------------------------|
| id | tag | object |
|-------------------------------|
| 1 | 2 | 13 |
| 2 | 2 | 18 |
| 3 | 1 | 24 |
---------------------------------
现在,我需要完成的是向标签表添加一列,称为"occurrences"或其他名称。 对于标签表中的每个标签,出现次数应设置为该标签在tag_objects中使用的次数。
因此,基本上像这样(显然是伪代码):
foreach(tags):
UPDATE tags
SET occurrences = (SELECT COUNT(id)
FROM tag_objects
WHERE tag = tags.id);
当人们在未来创建新的帖子和内容时,我将只需设置一个触发器来更新计数,但是我已经有几千行需要先进行计数。我不知道怎么做,所以任何帮助都将不胜感激。