在SQL中自动递增为计数器

时间:2013-01-19 13:55:18

标签: mysql sql auto-increment

我有一个包含3列的表格(imageId,reportId,counter) 表的主键是列(imageId,reportId) 现在我想计数器列将是我尝试插入对的次数的计数器(imageId,reportId)。

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

我该怎么做?

谢谢

2 个答案:

答案 0 :(得分: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

这是一个基本的例子:

Selecting counts of fields

注意,我坚持使用您的示例数据,但reportId和imageId应该正常化

答案 1 :(得分: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

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

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