问题标签 [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 回答
264 浏览

php - 如果转发了,则更新包含 retweet_count 的 MySQL 行

我一直在使用 Twitter API 和 PHP 使用以下函数将推文记录到 MySQL 数据库中:

这一切都可以记录推文,时间和发布者,但是虽然 retweet_count 将在输入时记录 - 所以如果我在写推文时记录它可能是 0 - 我无法得到

以便当我稍后运行查询时,如果推文已被转发,它会更新该行。

retweet_count 的大多数条目都是相同的(0 或 1),所以我不能将 retweet_count 设置为 UNIQUE,尽管主键 - id - 应该是唯一的,而且我还有一个自动递增的列 id - colid - 虽然那不是实际上是从 twitter api 中提取的,因此它可以是唯一的,并且设置为 UNIQUE。

是否有更好的函数来更新已经包含 int 的行?谢谢

0 投票
1 回答
102 浏览

mysql - 如何对多个条目使用 ON DUPLICATE KEY?

在单个条目中,我们可以使用ON DUPLICATE KEYtoUPDATE值:

如何对多个条目使用`ON DUPLICATE KEY作为

0 投票
1 回答
416 浏览

mysql - 在重复键更新中使用不同的列插入选择

上面会出现列数与行数不匹配的错误。

有没有一种方法可以将一列选择到@draft 中而不将其作为插入值的一部分包含在内,但是它可以在 DUPLICATE KEY UPDATE 中使用?

0 投票
2 回答
580 浏览

php - 使用 INSERT INTO On Duplicate Key UPDATE 进行表单输入

你如何使用INSERT INTO On Duplicate Key UPDATE表单输入?我在网上找到的所有示例都带有计数器或预定值。

我已经能够使用标准UPDATESET方法让我的代码工作(感谢一些非常有帮助的成员),但我的表格确实需要使用INSERT INTO On Duplicate Key UPDATE.

'user_id'是所有表中的唯一主键,并且是除帐户表之外的所有表中的外键。

我之前用来自动插入每个字段的代码是:

0 投票
1 回答
1094 浏览

mysql - mysql insert on duplicate key update 知道是否发生了

在我正在构建的应用程序中,我在重复键更新上使用了大量插入。我的问题是,在我的应用程序中,我需要知道它是插入还是更新,以便我的代码可以做出适当的决定。有谁知道我如何测试这个?

如果有人知道特定的方法,我正在使用 perl 的 DBI 模块。谢谢!

0 投票
1 回答
371 浏览

sql - Flex / AIR 本地 SQL 是否支持 ON DUPLICATE KEY UPDATE?

正如标题所说,Adobe AIR 平台中的 SQL 实现是否支持“ON DUPLICATE KEY UPDATE”?我无法让它工作,但我可能使用了错误的语法,特别是如果它与 MySQL 语法不同。flex 中的 SQL 文档非常稀少,我发现的文档很少提到 ON DUPLICATE KEY UPDATE。我得到的错误毫无意义:“错误 #2044: Unhandled SQLErrorEvent:.errorID=3115, operation=execute , message=Error #3115: SQL Error. , details=near 'ON': syntax error”

如果我收到错误,数据库文件根本不会插入任何值。

没有“ON DUPLICATE KEY UPDATE”,它可以按预期工作;

0 投票
2 回答
2250 浏览

mysql - 以重复键更新为条件

我做了一些研究,但似乎没有什么适合我的需求。我有一个数据库表,其中包含从 Web 服务检索的一些数据。

用户为每条记录执行一些任务,然后将其标记为“已处理”。所以我有一个名为“已处理”的附加 db 字段(不是基于我从 WS 获得的数据),默认设置为 0,当用户完成工作时设置为 1。

每天我都会检查 WS,如果状态码发生变化,我想更新行并将处理设置回 0(以便用户可以再次处理它)。

假设这是我的数据库...

  • 如果没有具有相同键(id)的行,我想插入一条新记录。
  • 如果有一行具有相同的键和“foo”更改,我想更新除“已处理”字段之外的任何值。
  • 如果有一行具有相同的键和状态码更改,我想更新任何值并将处理设置为 0。

我认为具有某些条件的 ON DUPLICATE KEY UPDATE 可以使其工作,也许在某些 CASE 或 IF 条件下......我错了吗?任何建议都可以接受,在此先感谢!

0 投票
2 回答
7542 浏览

mysql - MySql - 重复键插入

我知道存在INSERT IGNOREINSERT ... ON DUPLICATE KEY UPDATE。但是,当有重复键时,我想INSERT对一个临时表做一个记录,以记录被违反的唯一键,以便我可以将其输出给用户。

有什么办法可以做ON DUPLICATE INSERT吗?如果有帮助,我正在尝试进行批量插入。

0 投票
1 回答
1470 浏览

mysql - INSERT ON DUPLICATE KEY UPDATE 代替 UPDATE

这个问题有点关于“最佳实践”,但也是对潜在问题的搜索。我希望能够在不运行多个查询且不使用超级复杂查询的情况下对多个字段运行更新并分配不同的值。所以,我所做的是创建了一个带有主键和“名称”列作为唯一键的表。

现在,当我想用​​不同的值更新多个列时,我可以运行如下查询:

这是一个坏主意吗?有一个更好的方法吗?标准警察会来逮捕我吗?


编辑:我确实注意到了一个潜在的问题,即竞争条件。如果一个用户在另一个用户正在编辑它时删除了一行并保存了信息,则编辑将重新创建该行。(这可以用作功能或错误。)

0 投票
1 回答
885 浏览

mysql - ON DUPLICATE KEY 导致超时

我目前正在我的 MySQL 数据库上运行以下 SQL 语句:

但是,每次我运行它时,我都会收到以下错误:#1205 - Lock wait timeout exceeded; try restarting transaction. 这很可怕,因为我不知道到底出了什么问题。我的意图是更新现有行的所有值(除了id,它是表的主键)。

如果您有任何想法,请告诉我!

编辑:更多信息......这id是一个自动递增的字段。还有另一我们UNIQUE称它为IdentityNo_ )。IdentityNoid