ON DUPLICATE KEY UPDATE - 添加到现有值

时间:2011-12-22 18:38:30

标签: mysql sql ruby

我有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)+整数)

怎么做?

1 个答案:

答案 0 :(得分:4)

fine manual的顶部,您会看到一个确实类似于您尝试做的事情的示例:

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。