好吧,我编写了一些代码,将一些行插入到 SQL 中,如果该行存在,它将被更新。
现在我的问题是 它应该检查 WeaponID 是否存在,而不是 ID。 例如
它应该如何工作? WeaponID 的指定人员 ID 应该有多行。会有很多行(每个玩家大约 25 行),但我做不到......
我不知道如何解释我想要实现的目标...... 基本上,用户在该表中将有大约 25 行,但我只想在存在具有相同 ID 和 WEAPON ID 的行时进行更新,如果没有,则插入。
INSERT INTO `weapon_skills` VALUES (%d,'%e',%d, %d) ON DUPLICATE KEY UPDATE `Skill`=%d
这是结构
CREATE TABLE `weapon_skills` (
`ID` INT(11) NOT NULL DEFAULT '0',
`WeaponID` INT(3) NOT NULL DEFAULT '0',
`Username` VARCHAR(24) NOT NULL DEFAULT '0',
`Skill` INT(20) NULL DEFAULT '0',
PRIMARY KEY (`ID`)
基本上,如果有一行 ID:0 和武器 ID:24,则更新,如果没有,则创建新的
最佳答案
作为 insert ... on duplicate key update 上的 mysql 文档说:
If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, MySQL performs an UPDATE of the old row.
您应该在 username 和 Weaponid 列上创建唯一索引。如果您尝试为表中已存在的具有相同武器的同一用户插入一条记录,则重复的键子句将启动。如果需要的话,id 字段可能应该是自动增量字段。
请注意,使用数字用户 ID 字段而不是文本用户名来识别记录属于哪个用户会更有效。
除非您的 id 字段代表您的用户 ID。在这种情况下,将武器 ID 添加到主键,而不是创建唯一键。但在本例中,我会从表中删除用户名字段。
关于mysql - ON DUPLICATE KEY UPDATE 错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37691892/