ON DUPLICATE KEY UPDATE – 添加到现有值

我有SQL(MySQL 5.x)查询,如:

INSERT INTO table (val1), ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`) 

这很好用。

现在我需要用VALUES( val1 )+ ruby​​变量的总和来更新它。

  INSERT INTO table (val1), ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`) + #{ruby_variable} 

抛出一个错误。

(Ruby这里只是一个例子,实际上我需要求和VALUES( val1 )+整数)

怎么做?

在精美手册的顶部,您将看到一个完全符合您要做的事情的示例:

 INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; 

所以你正在寻找这个:

 connection.execute(%Q{ INSERT INTO table (val1) VALUES(#{connection.quote(x)}) ON DUPLICATE KEY UPDATE `val1` = `val1` + #{connection.quote(ruby_variable)} }) 

其中x是您要插入的内容, ruby_variable是您在重复时要添加到val1的内容。 INSERT需要一个VALUES ,而不是ON DUPLICATE。