我有一个表,其中包含我的游戏拥有的用户的项目。如果用户购买了新物品,则应该插入该物品,但如果他已经购买了物品,则应该增加。我可以使用INSERT ... ON DUPLICATE KEY UPDATE
,但我不明白我的问题。如何插入一行,但重复;更新它呢?
item_id
不是唯一的,因为许多玩家可以拥有相同的武器(即长剑)。 user_id
也不是唯一的,因为玩家可以拥有很多物品。
所以,我的问题是如何使查询UPDATE
,而不是INSERT
如果一行包含user_id
和item_id
已经存在?
根据主键约束或表上的任何其他唯一约束/索引来检测副本。 事情是,这听起来像你有一个“数量”列。如果您插入一行,您希望数量为1.如果因为播放器已经有1而更新,那么您希望数量递增...... ON DUP KEY UPDATE只会使现有的行与您相匹配想要插入。你必须按照我的建议去做,或者先找到这一行的主题。我更喜欢我的方式。 – 2009-10-15 22:00:09
顺便说一句,我的推理:首先检查总是需要两个查询。尝试并检查结果,如果它是dup,则只需要两个查询。 – 2009-10-15 22:02:09
对不起,我编辑后删除了我的评论。好吧,我只是想知道是否有可能只使用一个查询来做到这一点。 – Phoexo 2009-10-15 22:03:01