Как добавить новые и обновить существующие строки в одном запросе?

Рейтинг: 1Ответов: 0Опубликовано: 15.10.2014

Я мало что понимаю в SQL, прошу помочь в решении задачи:
Дано:

  • таблица table;
  • поля id, name, email (id - UNIQUE);
  • массив данных, передаваемый из php в запрос.

Задача: написать запрос на добавление несуществующих и обновление существующих записей.

Что-то уже получилось (сам запрос):

INSERT INTO `table` (`id`, `name`, `email`) 
VALUES  
('1-', 'oleg', 'qqq@mail.ru'),
('2-', 'dima', 'ggg@mail.ru'),
('3-', 'petr', 'mmm@mail.ru'),
('4-', 'anna', 'nnn@mail.ru')
и так далее...
ON DUPLICATE KEY UPDATE `name` = ????? `email` = ??????

Из php:

<?
// $arr - массив данных (порядка 10к строк формата: "('1-', 'oleg', 'qqq@mail.ru')")
$mysqli->query("
    INSERT INTO `table` (`id`, `name`, `email`) 
    VALUES ".implode(",", $arr)."
    ON DUPLICATE KEY UPDATE `name` = ????? `email` = ??????
")
?>

Вопрос: что надо писать после "ON DUPLICATE KEY UPDATE" для обновления существующих строк? Может, есть другие варианты решения задачи?

Ответы

Ответов пока нет.