如果某些值存在则更新 mysql,否则创建一个新条目
我有一个表 rating
,其中包含这些字段 rate_id、game_id、 rating、ip
。假设这些字段具有以下值 1,130,5,155.77.66.55
当用户尝试为游戏投票时,我想用 mysql 检查他是否已经为该游戏投票,这样 mysql 将检查是否ip
和game_id
已经存在,如果它们存在那么mysql将更新rating
的值,否则将创建一个新条目。
什么是有效的方法来做到这一点?
I have a table rating
with these fields rate_id, game_id, rating, ip
. Let suppose that these fields has the following values 1,130,5,155.77.66.55
When a user try to vote for a game, I want with mysql to check if he has already vote for this game so mysql will check if ip
and game_id
already exists, if they exists then mysql will update the value of rating
otherwise will create a new entry.
What is a efficient way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
创建涵盖
ip + game_id
的唯一索引。之后,您可以使用 INSERT ... ON DUPLICATE KEY UPDATE 声明。所以总的查询会是这样的
Create unique index that covers
ip + game_id
. After that you can use INSERT ... ON DUPLICATE KEY UPDATE statement.So the total query will be something like
MySQL 允许 INSERT 使用重复键更新语法。因此,如果您将密钥设置为 game_id、user_id (或识别用户的任何方式),那么您可以使用 INSERT...on DUPLICATE KEY UPDATE 来实现这一点:
http://dev.mysql.com/doc/refman/5.5/en/insert.html
MySQL allows an on duplicate key update syntax for INSERT. So if you set your key to be game_id, user_id (or whichever way you identify the user) then you can use INSERT...on DUPLICATE KEY UPDATE which will do just that:
http://dev.mysql.com/doc/refman/5.5/en/insert.html
您还可以查看 REPLACE INTO。也许不适合这个项目,但供将来参考:
自: dev.mysql.com
You could also take a look at REPLACE INTO. Maybe not for this project but for future reference:
from: dev.mysql.com