mysql - ON DUPLICATE KEY UPDATE 错误响应

标签 mysql

好吧,我编写了一些代码,将一些行插入到 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/

相关文章:

mysql - 使用 ARC 从 Objective-C 项目访问 MySQL 服务器

php - 如何在网页上使用 php 和 mysql 显示印地语/马拉地语文本

mysql - Carrierwave无法保存图像,使用引擎

php - 通过抓取链接删除整个mysql行?

php - 如何上传图像并将图像表id与帖子id连接(php mysql)

python - Bash 脚本找不到 Python MySQL.Connector 模块

MySql 查询 : include days that have COUNT(id) == 0 but only in the last 30 days

mysql - 使用 MySQL 和 PHP 创建 Kubernetes Pod?

mysql - GROUP BY 带日期的慢查询

mysql - node.js 合并多个控制流