ON DUPLICATE многократное обновление
Я пытаюсь создать запрос, который будет добавлять / обновлять несколько строк одновременно, и я пытаюсь убедиться, что он правильно обрабатывает дубликаты ключей, обновляя все значения, кроме закрытого ключа, который в моем случае будет a.id
INSERT INTO products a (a.id, a.price, a.condition, a.link, a.price_updated)
VALUES ('t1', 11, 'used', 'adasd', 100), ('t2', 11, 'used', 'adasd', 100)
ON DUPLICATE KEY UPDATE VALUES (a.price, a.condition, a.link, a.price_updated)
Приведенный выше запрос дает мне правильную синтаксическую ошибку рядом с a (a.id
что я могу делать не так?
Есть идеи?
2 ответа
Я думаю, это то, что вы ищете:
INSERT INTO products (id, price, cond, link, price_updated)
VALUES ('t1', 11, 'used', 'adasd', 100),
('t1', 11, 'used', 'adasd', 2100)
ON DUPLICATE KEY UPDATE
price = VALUES(price),
cond = VALUES(cond),
link = VALUES(link),
price_updated = VALUES(price_updated)
Я не думаю, что вы также можете использовать псевдонимы таблиц для этого, но я могу ошибаться.
Кстати, я использовал cond для поля условия, чтобы упростить его - замените его именами полей (вам может понадобиться обратный тик с условием, поскольку я считаю, что это зарезервированное слово).
Вы получаете синтаксическую ошибку, потому что инструкция INSERT Mysql не позволяет вам псевдоним вставленной таблицы: Вы должны сказать, INSERT INTO products (id, ...)
,