我有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
)+整数)
怎么做?
答案 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。