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 );

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

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

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

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

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

191
задан Acorn 17 May 2018 в 11:47
поделиться

2 ответа

Используйте ключевое слово ЗНАЧЕНИЯ для ссылки на новые значения (см. Документацию ]).

INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    age = VALUES(age),
     ...
447
ответ дан 23 November 2019 в 05:32
поделиться

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

-2
ответ дан 23 November 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: