问题标签 [insert-update]

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 回答
2013 浏览

java - 在MySQL中,如何仅在行不存在时插入并仅在现有版本较少时更新

我正在寻找一种方法,仅在 MySQL 中不存在该行时插入,并在该行存在且现有行的版本小于(或等于)新行的版本时更新。

例如,表定义为:

并包含以下数据:

我想合并下表(更新:id 列是唯一的):

它应该产生以下内容(更新:查看如何仅更新 1 并插入 4):

我看过INSERT ... ON DUPLICATE KEY UPDATE ...语句,但它不允许某种 WHERE 子句。另外,我不能真正使用REPLACE,因为它也不允许 WHERE。这甚至可以通过单个 MySQL 语句实现吗?

我正在使用 Java,并尝试使用带有批处理的PreparedStatement (addBatch) 插入/更新许多记录。任何帮助,将不胜感激。

更新:有没有办法将此查询与 Java 中的 PreparedStatement 一起使用?我有一个包含 ID、版本和数据的 Document 对象列表。

0 投票
3 回答
338 浏览

mysql - 维护排名表的最佳实践?

使用 MySQL 和 PHP,我有一个包含 2 列userscore.

每周一次,我重新运行排名脚本并计算每个用户的分数。

  • 许多用户有新的分数
  • 有些没有
  • 有时会有新用户添加到表中

用 MySQL 解决这个问题的最佳方法是什么?update如果我需要添加新行,是否有效?是否会insert覆盖现有行,以便我可以再次插入整个表?最好只是删除表并从头开始重新编写它吗?

除了成千上万的用户...

0 投票
2 回答
29515 浏览

mysql - 为什么在我的`INSERT ... ON DUPLICATE KEY UPDATE`中有 2 行受到影响?

我正在INSERT ... ON DUPLICATE KEY UPDATEPRIMARY KEY下表做一个:

但是,即使这些值应该是唯一的,我也看到 2 行受到影响。

为什么会这样?

编辑

为了比较,请参阅此查询:

0 投票
2 回答
969 浏览

sql - 如何提取 MS SQL Server 表的主键列的名称?

我有一个 MS SQL Server 数据库,上面有大约 75 个表,如果不存在具有相同主键的记录,我会尝试将记录插入表中,或者如果存在则更新。我可以将每个表的主键硬编码到我的 vb.net 代码中,但我不想在以后添加更多表,并且我的代码需要在不更改的情况下处理这个问题。有没有办法使用查询从表中提取主键列名称,以便我可以循环遍历执行相同代码的每个表?

谢谢,汤姆

PS我在SQL方面有点新手,所以如果你有时间,请简单明了地回答任何问题。

0 投票
2 回答
625 浏览

mysql - 更新记录(如果存在);否则插入

我想更新可能存在或不存在于表中的记录。如果它不存在于数据库中,那么它将被插入。

为了防止选择,我UPDATE首先使用语句并检查affected_rows > 0是否没有,然后我将此记录插入表中。

我想知道是否有更好的方法来做到这一点?

0 投票
1 回答
1260 浏览

sql - ON DUPLICATE KEY UPDATE 与多字段索引

我有这个带有一个行条目和 2 个索引的测试表,第一个是主键,然后是 a 和 b 列的唯一索引:

现在我正在尝试执行以下操作

并且我期望将 c 列的值从 3 更新为 100。但这并没有发生,我没有收到任何错误。我究竟做错了什么?

0 投票
1 回答
304 浏览

database - 使用插入和更新在数据库中传递未填充的值

我有一个问题,我可以将一些数据输入到数据库中。我可以编码这些东西吗..我使用插入和更新查询..值是双精度类型,整数......还有字符串...... ...

0 投票
11 回答
1054461 浏览

mysql - 插入 MySQL 表或更新(如果存在)

我想向数据库表中添加一行,但如果存在具有相同唯一键的行,我想更新该行。

例如:

假设唯一键是ID,并且在我的数据库中,有一行ID = 1。在这种情况下,我想用这些值更新该行。通常这会产生错误。
如果我使用INSERT IGNORE它会忽略错误,但它仍然不会更新。

0 投票
1 回答
22732 浏览

mysql - 使用 INSERT INTO ... ON DUPLICATE KEY UPDATE 时的 Mysql 主键

我的表结构是:

我想做的是:

假设我想插入一个新条目,但我不希望它重复,在谷歌搜索之后,我发现了这种格式:

我想问题出在我的表中,主键 => id。如何更改表格,以便可以使用:

我可以使用 user_id + type 作为主键吗?如果是的话,你能告诉我怎么做吗?

0 投票
4 回答
5668 浏览

java - 使用 JDBC 插入或更新表

我有一些记录要导入。第一次插入时没关系。如果我尝试再次导入相同的数据,我会收到 org.postgresql.util.PSQLException: ERROR: duplicate key value 违反唯一约束。如果数据相同/或已更改,我如何更新数据库中的记录,如果它是使用 JDBC 的新数据,则如何插入?

现在问题已解决。我在下面提供了答案。