我使用的是Node.js“MySQL -mysql”的节点驱动程序,但在语法上遇到了困难,无法完成REPLACE into和递增计数器的操作。下面是我到目前为止所做的,注意count字段是我想要将当前表值递增1的位置:
connection.query('REPLACE INTO links SET ?', { symbol: statName, timestamp: now, count: count + 1 }, function(err, result) {有人能建议如何做到这一点吗?
发布于 2012-06-17 16:29:04
我在使用INSERT with ON DUPLICATE KEY UPDATE找到了解决方案:
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);
});发布于 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
connection.query('REPLACE INTO links SET ?', { symbol: statName, timestamp: now, count: newcount }, function(err, result) {试一试吧!
https://stackoverflow.com/questions/11054747
复制相似问题