关于重复密钥更新的Mysql查询

时间:2016-02-22 20:43:30

标签: mysql

我的表产品包含字段:id(PK),title(UQ),价格,状态

我写了一个查询,如果表已有这样的标题

,应该更新行
INSERT INTO product (title, price, `status`) 
            VALUES("Black boots", 222.18, 1) 
                ON DUPLICATE KEY UPDATE price = 125.00 AND `status` = 2

这只是一个产品的例子。但是,在运行此查询后,我收到的消息是查询已成功执行,但价格变为= 0.00(有时为1.00)且状态不会更改。我的问题是什么?

2 个答案:

答案 0 :(得分:4)

要更新多个值,您需要使用逗号运算符:

INSERT INTO product (title, price, `status`) 
VALUES("Black boots", 222.18, 1) 
ON DUPLICATE KEY UPDATE price = 125.00, `status` = 2

答案 1 :(得分:0)

您还可以使用参数Values。这允许你INSERT / UPDATE多行一行

INSERT INTO product (title, price, `status`)
VALUES
 ("Black boots", 222.18, 1),
 ("Green boots", 111.22, 3)
ON DUPLICATE KEY UPDATE price = VALUES(price), `status` = VALUES(status);