问题标签 [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.
mysql - 重复键更新时的多次插入
我想要实现的类似于这个例子
然而,我的不同之处在于我试图同时进行多个插入。我更新了很多行。
如果插入重复,我希望插入增加会话数
以下(精简版)导致语法错误,但它应该解释我试图实现的目标
修改了插入的值以匹配重复值,如下面的注释
java - ON DUPLICATE KEY UPDATE 的 Prepared Statement 语法(参数数量错误)
这是我想要做的。如果主键(entity_id)存在,我想插入该表或更新记录。我只是遇到了 SQL 语法的问题。它不会让我拥有比第一个“值”数量更多的参数,所以我收到以下错误:
参数索引超出范围(7 > 参数数量,即 6)。
我认为这与我所要求的有点相似,但我无法根据我的需要对其进行解释。很抱歉可能发布重复。
哦,这是我的代码中的 UPDATE() 函数:
感谢您对此的任何帮助。:)
mysql - 如果满足某个条件,则更新密钥副本上的特定字段
我有一个表格,我从 CSV 文件上传数据。
字段如下所示:
这里的主键是 (StudentName,SubjectName)
我使用以下代码将数据放入表中:
我需要导入多个 csv 文件。可能存在密钥重复。遇到重复时,我正在尝试更新某个字段。
即:如果有重复,则 UPDATE field RESULT if : value for result in the duplicate entry is "Pass".
每个 csv 文件将针对进行测试的每一天。如果学生至少通过一次,表格应该反映这一点。
我应该如何更改我的代码以实现这一点?
mysql - 使用条件更新 - 重复键更新
我有一个名为“RESULT”的下表,我从另一个名为“Temp_main”的表中获取值
“RESULT”中的字段如下所示:
这里的主键是(StudentName,SubjectName)
我使用以下代码将数据放入表中:
temp_main 表没有相同的主键,所以当我将数据插入结果表时,会有重复的键值。
假设一个学生多次出现在同一科目的考试中。他所有的尝试都在 temp_main 表上,而只有他最好的结果在 Result 表上。
我正在尝试获取一个ON DUPLICATE KEY UPDATE
代码,当且仅当最新结果为“通过”时更新学生-科目对的结果
我试过
我确信这是糟糕的代码。但我找不到更好的解决方案。
mysql - MySql - Seq_in_index,更新重复键和死锁
我试图弄清楚在对重复键 使用更新时插入值的顺序是否影响Seq_in_index,我有一个我正在尝试调试的死锁。
所以例如我们有
一个视图表,它为每个视图获取一个插入,并为插入、更新和删除设置了触发器,影响其他 5 个表
受触发器影响的表之一的索引如下
现在我要问的是插入触发器是否像这样运行
并且更新触发器在翻转字段顺序的同时运行
这会导致像死锁一样
还是不管字段顺序如何,它都会通过 Seq_in_index 锁定键。
mysql - 对有两个主键的表使用 ON DUPLICATE KEY
我有一个带有 2 个主键的表(user_id
,post_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 文件所以有了这个,我的问题解决了再次感谢
mysql - mysql 在重复时插入和更新
我有几个列的表,我正在对其进行乘数插入。
IE:
我应该写什么而不是“CURRENT_COL_VAL”?如果我想用插入的值更新重复的行。
因为我不能在其中放置一个静态数字,因为它与多个插入中的每一行插入不同
mysql - 更新 MySql 中的现有行并处理重复键
我有一个 MySql 数据库,其中包含有关应用程序用户的数据。此应用程序已经投入生产,但每天都在添加改进。我所做的最后一项改进改变了数据收集和插入数据库的方式。
为了更清楚,我的数据库由 5 个包含用户数据的表和 1 个通过外键关联所有表的表组成。这 5 个外键一起构成了我拥有的这个“主表”的唯一索引。
问题是这些包含用户数据的表之一改变了它的格式,我想删除所有比我对我的应用程序所做的修改更旧的数据(只是从这个表中,其他的我需要保持不变)。然而,这个数据集在主表中有外键,我不能把这些行放在主表上,因为我拥有的其他信息很重要。我试图具体更改该表的外键值,但显然,我遇到了与重复索引相关的问题。
在互联网上阅读,我找到了使用“插入......重复密钥更新......”的解决方案,但我没有插入数据,只是更新它。我有一个关于如何在 PHP 上编写程序来更新我的数据库的想法,但是还有其他更简单的解决方案吗?是否可以仅使用 MySql 语法来避免这些问题?
mysql - IF 语句和 TIMESTAMP 的 MySQL 问题
我正在尝试进行具有以下行为的查询:
- 如果尚不存在则插入新行
:id = NULL
或行。id = :id
id = :id
如果行已存在,则更新现有行。- 将值设置
activated
为NOW()
if:- 的当前值
status <> :status
。(又名。如果 的值status
会改变) - 的值
:status = 'active'
。status
(又名will的新值'active'
)
- 的当前值
为了做到这一点,我做了以下准备好的声明:
据我所知,这句话准确地描述了所需的逻辑。但是,activated
无论 的值是否status
更改,其值始终保持不变'active'
。
谁能解释我做错了什么?并且(最好)解释如何解决它?
php - Mysql ON DUPLICATE KEY 错误
我在使用重复键时遇到了一些麻烦。我将从我的代码开始。
所以我试图从第一个表中获取变量并将它们插入到第二个表中,但是每个学生大约有四个条目(每个班级一个)。基本上,我将它们全部获取,然后尝试说“在重复键上,删除具有相同 oen 编号的最后一个条目。它给了我错误“警告:mysql_error() 期望参数 1 是资源,给定对象在第 23 行的 /var/www/ride/admin_settings/csv/students/update.php 中“在我们看到 ON DUPLICATE KEY 代码的那一行。有人知道发生了什么吗?