Можно ли сделать вставку или обновление в одном и том же запросе MySQL?
Да, используйте ОБНОВЛЕНИЕ ДУБЛИКАЦИОННОГО КЛЮЧА. Сначала создадим таблицу:
mysql> create table DemoTable(Id int NOT NULL PRIMARY KEY, Number int);
Query OK, 0 rows affected (0.83 sec)
Вставьте несколько записей в таблицу с помощью команды вставки:
mysql> insert into DemoTable values(1,190) ON DUPLICATE KEY UPDATE Number=Number+10;
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(2,130) ON DUPLICATE KEY UPDATE Number=Number+10;
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(1,190) ON DUPLICATE KEY UPDATE Number=Number+10;
Query OK, 2 rows affected (0.14 sec)
mysql> insert into DemoTable values(2,130) ON DUPLICATE KEY UPDATE Number=Number+10;
Query OK, 2 rows affected (0.17 sec)
Отобразите все записи из таблицы с помощью оператора select:
mysql> select *from DemoTable;
Это даст следующий результат. Мы вставили и обновили записи в одном запросе:
+----+--------+
| Id | Number |
+----+--------+
| 1 | 200 |
| 2 | 140 |
+----+--------+
2 rows in set (0.00 sec)