2016-09-06 3 views
1

Как я могу правильно управлять дублирующимся обновлением ключа для следующего SQL-запроса, где происходит несколько вложений?Обновление дублирующего ключа с несколькими вставками

INSERT into user(id, first, last) 
VALUES(1, 'f1', 'l1'), (2, 'f2', 'l2') 
ON DUPLICATE KEY UPDATE first = 'f1', last = 'l1'; // what about f2/l2? 

Вопрос: как можно указать несколько значений ключа обновления для вышеупомянутого запроса или помочь с латеральным мышлением, пожалуйста.

Общая информация: Проект предназначен для синхронизации с удаленной кормой json.

ответ

3

Использование VALUES:

INSERT into user(id, first, last) 
    VALUES(1, 'f1', 'l1'), (2, 'f2', 'l2') 
    ON DUPLICATE KEY UPDATE 
     first = VALUES(first), 
     last = VALUES(last); 

Это как функция (на самом деле синтаксический сахар), который говорит, чтобы получить значение, переданное в для insert к ряду.

+0

Спасибо, Гордон, не могли бы вы указать мне на несколько заявлений об обновлении (аналогично моей вставке). –

+0

можете ли вы также добавить ссылку на документацию для функции «VALUES» и других подобных функций –

+0

http://dev.mysql.com/doc /refman/5.7/en/miscellaneous-functions.html#function_values ​​ –