问题标签 [on-duplicate-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
473 浏览

mysql - ON DUPLICATE KEY 查询中的重复项在哪里?

描述:

我正在尝试将用户的首选项插入数据库。如果用户还没有放置任何东西,我想要一个insert,否则,我想要一个update. 我知道我可以在创建用户时插入默认值,而不是专门使用update,但这增加了另一个查询(我认为)

问题:

我已经阅读了,ON DUPLICATE KEY UPDATE但我不明白。几乎是我的确切问题,但没有答案。答案说:

只要您将正确的列定义为 UNIQUE KEY 或 PRIMARY KEY,它听起来确实适用于您想要做的事情。

如果我insert像这样做一个简单的事情:

那将如何产生DUPLICATE KEY?据mysql所知,它只是另一个插入,并且id是自动递增的。我将表中的主键设置为唯一的,但insert不会对此进行检查,对吧?

桌子:

0 投票
2 回答
4127 浏览

sql - MS Access:如何实现 ON DUPLICATE KEY UPDATE?

尽量避免单独查询以检查密钥是否存在,然后相应地插入或更新。从谷歌搜索看来,Access 也不支持 SQL 服务器的 MERGE。

谢谢

0 投票
0 回答
50 浏览

mysql - 在mysql中使用条件将用户的对象关系合并到另一个用户

这是我的第一个 SO 问题 :)

我正在尝试将临时用户“合并”到现有用户,以及他们所有相关的对象关系——一个是“post_relationships”

问题是..如果两个用户都与同一个帖子有关系,一个简单的 INSERT INTO ... SELECT 语句会产生一个 DUPLICATE KEY 错误..

另外,如果其中一个用户具有更高的权限级别,我想保留两个用户的最高权限级别。

我已经构建了一个有效的查询,但我想知道是否有更好的方法来完成这个。我担心随着表的增长,这个查询不会那么有效。

当条件出现时,它总是强制更新

这让我担心这里有一些矫枉过正的代码。有什么建议么?

谢谢!

0 投票
0 回答
94 浏览

mysql - 对唯一映射键的某些部分使用 ON DUPLICATE KEY UPDATE

我有如下所示的表格

在这张表中ItemAttMapIDauto_increment primary_key

并且ItemAttributeID, VendorID, VItemIDUnique Mapping

我使用了以下查询

它给了我想要的正确结果,但是当我使用以下查询而不是更新特定记录时,它会插入新记录。

表的变化是这样的

我想要更新第三个数字行,但它正在向表中插入一条新记录。

如何使用 ON DUPLICATE KEY UPDATE 来实现这一点。

编辑:

我只想检查,如果VendorID并且vItemID已经存在,然后ItemAttributeID使用 ON DUPLICATE KEY UPDATE 更新记录( NOT THE )。

因为如果我将ItemAttributeID相同的内容放在VendorIDvItemID查询中,那么它会更新记录,否则它会插入新记录。

0 投票
2 回答
14922 浏览

mysql - update on duplicate key update

I have a table playerspoints that contains a shop id and a player's id, and a player's points.

#xA;

What I want to do is transfer points from a shop to the other.

  • Problem: shop id and players id form a unique index.
  • What I want to do is on duplicate key update, instead of let it fail, to add the points of one entry to the other and delete the "from" entry.

Something like:

#xA;

Do you get the idea?

0 投票
2 回答
26833 浏览

php - PDO 使用命名占位符为 INSERT 和 ON DUPLICATE KEY UPDATE 准备语句

我想将 PDO INSERT 和 UPDATE 准备好的语句切换到 INSERT 和 ON DUPLICATE KEY UPDATE 因为我认为它会比我目前正在做的更有效率,但我无法找出正确的语法与命名占位符和 bindParam 一起使用。

我在 SO 上发现了几个类似的问题,但我是 PDO 的新手,无法成功地根据我的标准调整代码。这是我尝试过的,但它不起作用(它不插入或更新):

这是我的代码的简化版本(我有几个查询,每个查询有 20 - 50 个字段)。我目前正在首先更新并检查更新的行数是否大于 0,如果不是,则运行插入,并且每个查询都有自己的一组 bindParam 语句。

0 投票
2 回答
199 浏览

mysql - 如何使 MySQL 在重复键上返回冲突键?看里面

说,我有一个简单的表:id作为主键,并且field. 然后我做: INSERT INTO table(id,field) VALUES (1,'blah') 然后我再做一次。那么,我怎样才能让 MySQL 返回以下内容:

ID

1

这样它就可以像 SELECT-ing 冲突键一样工作?

0 投票
1 回答
1276 浏览

mysql - 如果存在则更新,否则插入,但具有非唯一列

我知道ON DUPLICATE KEY UPDATE当我想更新一行(如果存在)或插入时,我可以使用“”。但就我而言,我想根据非唯一键进行更新。

例如:我有一个包含 3 列的表:A、B 和 C。它们共同构成唯一键。
现在,如果 B 和 C 的值匹配,我想更新该行,否则插入一个新行。

这可以在没有多个查询的情况下在 MySQL 中完成。

0 投票
9 回答
315944 浏览

mysql - 在重复密钥更新上与插入相同

我四处寻找,但没有找到是否可能。

我有这个 MySQL 查询:

字段 id 有一个“唯一索引”,所以不能有两个。现在,如果数据库中已经存在相同的 id,我想更新它。但是我真的必须再次指定所有这些字段,例如:

或者:

我已经在插入中指定了所有内容......

额外说明一下,我想使用解决方法来获取 ID!

我希望有人能告诉我最有效的方法是什么。

0 投票
2 回答
3202 浏览

mysql - 如何使用 ON DUPLICATE KEY 插入...选择

我有两个结构相同的表。表 A 包含所有当前广告,表 B 包含存档广告。第 1 列 (ad_id) 是主键、AI、INT。表引擎是 MyISAM。

我需要将某个日期之前的所有表 A 广告复制到存档表 B。我的目标是除了 ad_id 之外的所有字段都是重复的,ad_id 应该自动递增。这是我尝试过的:

表 B 有数千个广告,表 A 经常被刷新,以至于唯一 id 字段的数字很少,经常与表 B 中的 id 重复。所以 MySQL 摇摇晃晃地告诉我我有一个Duplicate entry '8577' for key 'PRIMARY'.

所以我做了几次尝试来克服这个问题:

首先,我尝试选择要插入的各个列,设置ad_id为 NULL:

这会导致错误#1241 - Operand should contain 1 column(s),如果我使用通配符 * 选择器,该错误就会消失,但随后会出现重复错误。

接下来我尝试SELECT LAST_INSERT_ID()了,它总是返回 0。

然后我尝试了一些 using ON DUPLICATE KEY UPDATE,但我似乎无法让它工作。

我什至试图通过以下方式获取最高 id:

这仅适用于一行,然后再次导致重复条目(因为 @max 是静态变量)。

我在这里做错了什么?我这样做是不是太难了?