Как правильно составить запрос MYSQL INSERT INTO и UPDATE одновременно?

Для выполнения операций вставки (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, поскольку она позволяет сократить количество кода и упростить работу с базами данных.