2016-02-22 2 views
1

У меня есть таблица продуктов с полями: ID (PK), название (UQ), цены, статусMysql запрос на дубликат ключа обновления

Я написал запрос, который должен обновить строку, если таблица уже имеет такое название

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), а статус не изменяется. В чем моя проблема?

ответ

4

Чтобы обновить несколько значений, которые нужно использовать оператор запятой:

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

ничего себе, это действительно сделало трюк. Спасибо! – quento

0

Вы также можете использовать аргумент значения. Это позволяет вам ВСТАВИТЬ/ОБНОВИТЬ более одного ряда

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); 
Смежные вопросы