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

mysql - 教义:重复密钥更新

如何INSERT使用 option 编写学说查询ON DUPLICATE KEY UPDATE

0 投票
1 回答
529 浏览

php - 使用 ON DUPLICATE KEY 插入

我的查询有点进退两难。为了使我的代码达到最佳状态,我想在 PHP 中做尽可能少的逻辑,让 MySQL 处理大部分内容。

所以这就是我所拥有的:我有一个包含 10 个键的数组。每个键都保留了一个新数组的一些值。每个值代表数据库表中的一行。

假设我的数据库表有 6 列。第一个是具有自动增量的主。第 2、3 和 4 列应该是唯一的。第 5 列是一个 TEXT 表示,它不应该是唯一的。第 6 列是 INT(1),即 0 或 1。

现在,当我将数据插入到我的表中时,我使用INSERT INTO mytable (col2, col3, col4, col5, col6) VALUES ('$col2','$col3','$col4','$col5',1) ON DUPLICATE KEY UPDATE col5 = '$col5', col6 = 0; This 完美无缺,但它并没有完成我所需要的。

当我再次发送相同的数组时,但是对于 key3, col5 行,我将数据更改为其他内容,我只希望 col6 将该键更新为 0;其余的应该保持 1。现在发生的情况是每一行都会得到更新,即使它是用完全相同的数据更新的。

所以,我需要的是,如果 col5 与当前保存的值不同,我只想更新 col6。我怎样才能做到这一点?

0 投票
2 回答
105871 浏览

php - PHP MYSQL UPDATE 如果存在或 INSERT 如果不存在?

我不知道这是否正确。我有一个类,如果字段当前存在,我想更新数据库,如果不存在则插入。复杂之处在于我正在加入 3 个表(set_colors、school_art、baseimage)

任何帮助都会非常棒。

这是我所拥有的:

0 投票
1 回答
1627 浏览

php - mysqli::insert_id 在重复键上返回错误的 id

在 PHP 中使用 mysqli::insert_id 进行 INSERT INTO ON DUPLICATE KEY UPDATE 时,如果行已更新,我将继续获取下一个自动增量而不是更新的行。在同一个数据库但在另一个表中,使用 ON DUPLICATE KEY UPDATE 时我没有这种行为。相反,我得到了更新行的 id。但是现在由于某种原因,在我创建的新表中,我不断得到下一个甚至不存在的 id。这两个表都是 MyISAM,并且有一个自动增量字段。我不明白为什么他们的行为不同。

例子:

有任何想法吗?

0 投票
1 回答
217 浏览

mysql - 移动整个范围的键

我正在处理时间序列数据,其键列是时间戳:Time。每行还有许多“值”列。

我即将将我的整个数据范围移动几个小时(由于夏令时问题)。为此,我将更新几行的键,这可能会导致一些重复的键。我希望忽略日期范围边缘的重复键。我希望移位的范围覆盖旧的范围。

我打算做类似的事情:

这是describe <table>时间键的输出:

我的问题是:它会一次移动所有键,还是会尝试逐行移动每一行,导致在移动范围内产生大量重复键?

你有没有更好的方法来做到这一点?提前致谢

0 投票
1 回答
356 浏览

mysql - 比赛条件的概念

我知道什么是比赛条件,但我仍然不完全理解:

首先,我知道myisam不支持事务,而innodb支持。

我正在建立一个有很多用户的社交网站,我想知道我是否需要考虑竞争条件,因为用户将使用 ON DUPLICATE KEY UPDATE 更新他们的个人资料,但我想知道是否会发生竞争条件以及你如何编写代码来防止这个问题?

有人可以在一个有多个用户的网站上解释竞争条件的概念,例如使用 COMMIT、ROLLBACK 等。

我在哪里使用这些东西?

0 投票
2 回答
379 浏览

php - 是的另一个 ON DUPLICATE KEY UPDATE 查询

我一直在阅读这里的所有问题,但我仍然不明白

我有两张相当大的相同桌子。我想packages_sorted用数据更新表packages_sorted_temp而不破坏现有数据packages_sorted

packages_sorted_temp仅包含 2 列的数据,db_id并且quality_rank

packages_sorted包含所有 35 列的数据,但quality_rank为 0

每个表上的主键是db_id,这就是我想要触发的ON DUPLICATE KEY UPDATE

本质上,我如何通过和更改合并这两个表packages_sortedquality_rank0 到quality_rank存储在packages_sorted_temp同一个主键下

这是不起作用的

0 投票
1 回答
1141 浏览

mysql - 使用“重复键”添加值

我有以下名为 $words 的数组

我想用以下内容插入它:

表“示例”有一个名为 ID 的键,具有自动增加功能;字段词是“唯一的”

我想要的是在“证明”字段中,每次“单词”相同时都会添加值

所以结果应该如下:

所以我尝试添加一个“重复键”短语

但我无法弄清楚我必须在 Attestation = 之后添加什么,以便一个接一个地添加不同的证明,例如:DI.5,9DI.2,8 或者是“重复键”不是正确的方法吗?

0 投票
1 回答
1442 浏览

mysql - Mysql 多个唯一键

当多个唯一键时是否可以有一个或选项?

例如我要检查这个键或这个键,如果一个人踢出一个重复的错误然后更新那个键?

我有 2 个唯一键:UPN 和(用户名,学校)

我们在 out MYSQL 中使用了 on duplicate update 语句。如果通过了 UPN,则在重复或插入新行时更新 upn 键。我想检查 UPN 和(用户名、学校)并执行以下操作:

If upn match update on that if (username,school) match update on that if upn dosnt match but (username,school) do update on (username,school) match If upn match and (username,school) dosnt update on UPN match

所以我需要它来使用 or 代替 and,这可能吗?

0 投票
1 回答
1674 浏览

mysql - ON DUPLICATE KEY 无法正常工作

我正在运行以下查询,但出现错误。我认为它来自该ON DUPLICATE KEY部分,但我不能 100% 确定在那里使用的正确语法是什么。

编辑

使用以下我收到此错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 10 行的 ')' 附近使用正确的语法