MySQL ON DUPLICATE KEY UPDATE для ввода нескольких строк в одном запросе

У меня есть запрос sql, где я хочу вставить несколько строк в один запрос. поэтому я использовал что-то вроде:

$sql = "INSERT INTO beautiful (name, age)
  VALUES
  ('Helen', 24),
  ('Katrina', 21),
  ('Samia', 22),
  ('Hui Ling', 25),
  ('Yumie', 29)";

mysql_query( $sql, $conn );

Проблема заключается в том, когда я выполняю этот запрос, я хочу проверить, является ли ключ UNIQUE (который не является PRIMARY KEY), например. 'name' в вышеприведенном случае, следует проверить, и если такое "имя" уже существует, соответствующая целая строка должна быть обновлена ​​в противном случае.

Например, ниже, например, если "Катрина" уже присутствует в базе данных, вся строка, независимо от количества полей, должна быть обновлена. Опять же, если "Samia" нет, строка должна быть вставлена.

Я думал об использовании:

INSERT INTO beautiful (name, age)
      VALUES
      ('Helen', 24),
      ('Katrina', 21),
      ('Samia', 22),
      ('Hui Ling', 25),
      ('Yumie', 29) ON DUPLICATE KEY UPDATE

Вот ловушка. Я застрял и смутился, как продолжить. У меня есть несколько строк для вставки/обновления за раз. Пожалуйста, дайте мне направление. Спасибо.

Ответ 1

Используйте ключевое слово VALUES для ссылки на новые значения (см. документация).

INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    age = VALUES(age),
     ...

Ответ 2

Вы можете использовать Replace вместо INSERT... ON DUPLICATE KEY UPDATE.