0

我有一个包含 3 列(imageId、reportId、counter)的表,表的主键是列(imageId、reportId)现在我希望计数器列是我尝试插入该对的次数的计数器(图像 ID,报告 ID)。

例如,如果我有图像“x.png”并且有 100 人报告该图像包含色情内容,我希望表中具有值 (“x.png”、“色情”) 的行在计数器中有 100柱子。当下一个人将此图像报告为色情内容时,我希望计数器为 101,依此类推。

我怎么能做这样的事情?

谢谢你

4

2 回答 2

2

利用INSERT ... ON DUPLICATE KEY UPDATE

INSERT IGNORE INTO table (imageId, reportId, counter) VALUES (1, 1, 0) ON DUPLICATE KEY UPDATE SET counter=counter+1

您还可以将 counter 列的默认值设置为 0 并使用:

INSERT IGNORE INTO table (imageId, reportId) VALUES (1, 1) ON DUPLICATE KEY UPDATE SET counter=counter+1
于 2013-01-19T13:59:54.840 回答
2

在这种情况下,最好向表中添加新行。这意味着您可以在其顶部提供一个视图,该视图可以根据需要选择计数。

每个报告新行的好处是还允许用户添加自定义消息等。

- 更新

这里有一些关于视图的细节http://dev.mysql.com/doc/refman/5.0/en/view-syntax.html

在它的核心,您的查询将只是一个基本查询,例如

SELECT imageId, reportId, count(reportId) as count FROM training.reporttable group by imageId, reportId

这是一个基本示例:

选择字段计数

请注意,我坚持使用您的示例数据,但应该对 reportId 和 imageId 进行规范化

于 2013-01-19T13:58:40.143 回答