Для выполнения операций вставки (INSERT INTO) и обновления (UPDATE) одновременно в MySQL, вы можете использовать конструкцию INSERT ... ON DUPLICATE KEY UPDATE (также известную как UPSERT).
Эта конструкция позволяет вам вставить новую запись в таблицу или обновить существующую запись, если уже существует строка с заданным ключом (PRIMARY KEY или UNIQUE KEY).
Правильный синтаксис для такого запроса выглядит примерно так:
INSERT INTO table_name (column1, column2, ..) VALUES (value1, value2, ..) ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ..;
В этом запросе вы указываете имя таблицы (table_name) и столбцы (column1, column2, ..), в которые вы хотите вставить значения. В выражении VALUES (value1, value2, ..) вы устанавливаете фактические значения, которые вы хотите вставить для каждого столбца.
После слова ON DUPLICATE KEY UPDATE вы указываете столбцы и значения, которые нужно обновить, если произошло дублирование ключа. Вы можете указать столбец и значение для каждого столбца, которые вы хотите обновить.
Пример использования запроса INSERT ... ON DUPLICATE KEY UPDATE:
INSERT INTO employees (id, name, salary) VALUES (1, 'John Doe', 5000) ON DUPLICATE KEY UPDATE name = VALUES(name), salary = VALUES(salary);
В этом примере мы бы вставили строку с id=1, name='John Doe' и salary=5000 в таблицу employees. Если строка с таким же id уже существует, она будет обновлена, устанавливая новые значения для столбцов name и salary.
Конструкция INSERT ... ON DUPLICATE KEY UPDATE является очень удобным способом для одновременного выполнения операций вставки и обновления в MySQL, поскольку она позволяет сократить количество кода и упростить работу с базами данных.