Це рішення, у якому у вашій таблиці багато полів, і ви не хочете отримувати судом пальця від введення всіх полів, просто введіть потрібні :)
Як скопіювати кілька рядків у ту саму таблицю, де деякі поля мають різні значення:
- Створіть тимчасову таблицю з усіма рядками, які ви хочете скопіювати
- Оновіть усі рядки у тимчасовій таблиці потрібними значеннями
- Якщо у вас є поле автоматичного збільшення, слід встановити його в NULL у тимчасовій таблиці
- Скопіюйте всі рядки тимчасової таблиці в оригінальну таблицю
- Видаліть тимчасову таблицю
Ваш код:
CREATE table temporary_table AS SELECT * FROM original_table WHERE Event_ID="155";
UPDATE temporary_table SET Event_ID="120";
UPDATE temporary_table SET ID=NULL
INSERT INTO original_table SELECT * FROM temporary_table;
DROP TABLE temporary_table
Загальний код сценарію:
CREATE table temporary_table AS SELECT * FROM original_table WHERE <conditions>;
UPDATE temporary_table SET <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
UPDATE temporary_table SET <auto_inc_field>=NULL;
INSERT INTO original_table SELECT * FROM temporary_table;
DROP TABLE temporary_table
Спрощений / стиснутий код:
CREATE TEMPORARY TABLE temporary_table AS SELECT * FROM original_table WHERE <conditions>;
UPDATE temporary_table SET <auto_inc_field>=NULL, <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
INSERT INTO original_table SELECT * FROM temporary_table;
Оскільки для створення тимчасової таблиці використовується TEMPORARY
ключове слово, воно буде автоматично відмінено, коли сеанс закінчиться (як @ ar34z запропонував).