首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-mysql:替换为递增当前表值的语句

node-mysql:替换为递增当前表值的语句
EN

Stack Overflow用户
提问于 2012-06-16 00:30:29
回答 2查看 3.4K关注 0票数 2

我使用的是Node.js“MySQL -mysql”的节点驱动程序,但在语法上遇到了困难,无法完成REPLACE into和递增计数器的操作。下面是我到目前为止所做的,注意count字段是我想要将当前表值递增1的位置:

代码语言:javascript
复制
connection.query('REPLACE INTO links SET ?', { symbol: statName, timestamp: now, count: count + 1  }, function(err, result) {

有人能建议如何做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-17 16:29:04

我在使用INSERT with ON DUPLICATE KEY UPDATE找到了解决方案:

代码语言:javascript
复制
connection.query('INSERT INTO links SET symbol = ?, timestamp = ?, title = ?, url = ? ON DUPLICATE KEY UPDATE count = count + 1', [statName, now, interaction.data.links.title[y], interaction.data.links.url[y]], function(err, results) {
                if (err) console.log(err);
            });
票数 2
EN

Stack Overflow用户

发布于 2012-06-16 01:16:52

请记住,REPLACE类似于INSERT而不是UPDATE。

在幕后,机械地是一个DELETE后跟一个INSERT。它在中这样说:

REPLACE的工作方式与INSERT完全相同,不同之处在于,如果表中的旧行与主键或唯一索引的新行具有相同的值,则会在插入新行之前删除旧行。请参阅第13.2.5节“插入语法”。

REPLACE是对MySQL标准的扩展。它要么插入,要么删除并插入。有关标准SQL的另一个MySQL扩展--插入或更新--请参阅第13.2.5.3节,“插入...在复制关键字更新语法时“。

如果要递增count列,请使用。

请确保JavaScript引擎可以与一起工作。如果不是,则必须将计数捕获为新计数,递增新计数,并将该数字提供给REPLACE

代码语言:javascript
复制
connection.query('REPLACE INTO links SET ?', { symbol: statName, timestamp: now, count: newcount }, function(err, result) {

试一试吧!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11054747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档