我需要使用ON DUPLICATE KEY来将表中的列按设定的数量递增.如何获取列的当前值并将其递增X amount.

注意:我正在使用nodejs mysql包,这是我目前的代码:

db.query(`INSERT INTO some_table SET ? ON DUPLICATE KEY UPDATE ?`, [
    {
        sessions: 25,
        pageviews: 240
    },
    {
        sessions: `sessions + ${sessionsIncrementAmount}`,
        pageviews: `pageviews + ${pageviewsIncrementAmount}`
    }
])

推荐答案

不能使用placehoders,但可以将字符串中的变量与sql语法column_name = column_name + yournumber结合使用

db.query(`INSERT INTO some_table SET ? ON DUPLICATE KEY UPDATE sessions = sessions + ${sessionsIncrementAmount},pageviews = pageviews + ${sessionsIncrementAmount}`, [
    {
        sessions: 25,
        pageviews: 240
    }
])

Mysql相关问答推荐

MySQL binlog事件上的并发事务行为

用于搜索从各种表中获得的结果的查询

SQL:创建新列并将现有表中的值追加到新创建的列中

默认情况下,MariaDB是否限制为本地主机?

为什么我的带有索引字段和非索引字段的 Select 有时需要很长时间

含有子查询的MySQL函数出现语法错误

查询优化并提高性能

在 MySQL 中,如何对 LIKE 查询进行批量更新,删除字符?

Mysql时间序列数据的最小值和最大值

SQL: Select TEXT 字段的子字符串比整个值快

在 Spring Data jpa 中的 @Query 中无法识别本机查询

获取 MySQL 中每一行之间负差的总和

此更新查询是否有任何可能的重写选项?

为什么一个 10 位的电话号码不能存储在长度为 10 的整数中?

从 2 个不同的表中获取数据并将它们加入 sql

SUBSTRING_INDEX 获取第 n 个值

更改整数时间到日期格式 MM/DD/YY,如 python 中的 datetime.fromtimestamp

如何为 php 启用 mysqlnd?

utf8mb4_unicode_ci 与 utf8mb4_bin

表被指定了两次,既作为更新的目标,又作为 mysql 中数据的单独源