问题标签 [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 投票
1 回答
80 浏览

mysql - 重复键更新时的多次插入

我想要实现的类似于这个例子

键插入时单数

然而,我的不同之处在于我试图同时进行多个插入。我更新了很多行。

如果插入重复,我希望插入增加会话数

以下(精简版)导致语法错误,但它应该解释我试图实现的目标

修改了插入的值以匹配重复值,如下面的注释

0 投票
2 回答
11580 浏览

java - ON DUPLICATE KEY UPDATE 的 Prepared Statement 语法(参数数量错误)

这是我想要做的。如果主键(entity_id)存在,我想插入该表或更新记录。我只是遇到了 SQL 语法的问题。它不会让我拥有比第一个“值”数量更多的参数,所以我收到以下错误:

参数索引超出范围(7 > 参数数量,即 6)。

我认为这与我所要求的有点相似,但我无法根据我的需要对其进行解释。很抱歉可能发布重复。

哦,这是我的代码中的 UPDATE() 函数:

感谢您对此的任何帮助。:)

0 投票
2 回答
97 浏览

mysql - 如果满足某个条件,则更新密钥副本上的特定字段

我有一个表格,我从 CSV 文件上传数据。

字段如下所示:

这里的主键是 (StudentName,SubjectName)

我使用以下代码将数据放入表中:

我需要导入多个 csv 文件。可能存在密钥重复。遇到重复时,我正在尝试更新某个字段。

即:如果有重复,则 UPDATE field RESULT if : value for result in the duplicate entry is "Pass". 每个 csv 文件将针对进行测试的每一天。如果学生至少通过一次,表格应该反映这一点。

我应该如何更改我的代码以实现这一点?

0 投票
1 回答
215 浏览

mysql - 使用条件更新 - 重复键更新

我有一个名为“RESULT”的下表,我从另一个名为“Temp_main”的表中获取值

“RESULT”中的字段如下所示:

这里的主键是(StudentName,SubjectName)

我使用以下代码将数据放入表中:

temp_main 表没有相同的主键,所以当我将数据插入结果表时,会有重复的键值。

假设一个学生多次出现在同一科目的考试中。他所有的尝试都在 temp_main 表上,而只有他最好的结果在 Result 表上。

我正在尝试获取一个ON DUPLICATE KEY UPDATE代码,当且仅当最新结果为“通过”时更新学生-科目对的结果

我试过

我确信这是糟糕的代码。但我找不到更好的解决方案。

0 投票
0 回答
699 浏览

mysql - MySql - Seq_in_index,更新重复键和死锁

我试图弄清楚在对重复键 使用更新时插入值的顺序是否影响Seq_in_index,我有一个我正在尝试调试的死锁。

所以例如我们有

一个视图表,它为每个视图获取一个插入,并为插入、更新和删除设置了触发器,影响其他 5 个表

受触发器影响的表之一的索引如下

现在我要问的是插入触发器是否像这样运行

并且更新触发器在翻转字段顺序的同时运行

这会导致像死锁一样

还是不管字段顺序如何,它都会通过 Seq_in_index 锁定键。

0 投票
2 回答
1592 浏览

mysql - 对有两个主键的表使用 ON DUPLICATE KEY

我有一个带有 2 个主键的表(user_idpost_id)我只想插入行,如果表没有这个行user id并且post id 如果这个键存在以前的数据,那么只有那个行更新我写这个查询的新数据:

例如,如果该行存在于表中:

  • 用户 ID:5
  • post_id:1
  • post_per:001
  • 评论员:111
  • cat_per:101

然后,当我执行上述查询时,mysql 更新这一行,只是因为post_id这一行是“1”,而 mysql 不应该更新这一行。我不明白有什么问题。

上述查询的结果是:

==================

感谢我所有的朋友当我决定删除表并再次使用它时,我从这个表中得到一个导出并查看.sql文件,我看到了这个:

显然,问题来自 UNIQUE KEY,我将其从文件中删除,然后删除trust_list表,然后导入 .sql 文件所以有了这个,我的问题解决了再次感谢

0 投票
1 回答
171 浏览

mysql - mysql 在重复时插入和更新

我有几个列的表,我正在对其进行乘数插入。

IE:

我应该写什么而不是“CURRENT_COL_VAL”?如果我想用插入的值更新重复的行。

因为我不能在其中放置一个静态数字,因为它与多个插入中的每一行插入不同

0 投票
1 回答
64 浏览

mysql - 更新 MySql 中的现有行并处理重复键

我有一个 MySql 数据库,其中包含有关应用程序用户的数据。此应用程序已经投入生产,但每天都在添加改进。我所做的最后一项改进改变了数据收集和插入数据库的方式。

为了更清楚,我的数据库由 5 个包含用户数据的表和 1 个通过外键关联所有表的表组成。这 5 个外键一起构成了我拥有的这个“主表”的唯一索引。

问题是这些包含用户数据的表之一改变了它的格式,我想删除所有比我对我的应用程序所做的修改更旧的数据(只是从这个表中,其他的我需要保持不变)。然而,这个数据集在主表中有外键,我不能把这些行放在主表上,因为我拥有的其他信息很重要。我试图具体更改该表的外键值,但显然,我遇到了与重复索引相关的问题。

在互联网上阅读,我找到了使用“插入......重复密钥更新......”的解决方案,但我没有插入数据,只是更新它。我有一个关于如何在 PHP 上编写程序来更新我的数据库的想法,但是还有其他更简单的解决方案吗?是否可以仅使用 MySql 语法来避免这些问题?

0 投票
2 回答
69 浏览

mysql - IF 语句和 TIMESTAMP 的 MySQL 问题

我正在尝试进行具有以下行为的查询:

  • 如果尚不存在则插入新行:id = NULL或行。id = :id
  • id = :id如果行已存在,则更新现有行。
  • 将值设置activatedNOW()if:
    • 的当前值status <> :status。(又名。如果 的值status会改变)
    • 的值:status = 'active'status(又名will的新值'active'

为了做到这一点,我做了以下准备好的声明:

据我所知,这句话准确地描述了所需的逻辑。但是,activated无论 的值是否status更改,其值始终保持不变'active'

谁能解释我做错了什么?并且(最好)解释如何解决它?

0 投票
1 回答
182 浏览

php - Mysql ON DUPLICATE KEY 错误

我在使用重复键时遇到了一些麻烦。我将从我的代码开始。

所以我试图从第一个表中获取变量并将它们插入到第二个表中,但是每个学生大约有四个条目(每个班级一个)。基本上,我将它们全部获取,然后尝试说“在重复键上,删除具有相同 oen 编号的最后一个条目。它给了我错误“警告:mysql_error() 期望参数 1 是资源,给定对象在第 23 行的 /var/www/ride/admin_settings/csv/students/update.php 中“在我们看到 ON DUPLICATE KEY 代码的那一行。有人知道发生了什么吗?