Я использую следующий код для копирования из одной таблицы непосредственно в другую:
$transfer = $db- > exec ( "INSERT INTO table2 SELECT * FROM table1 WHERE groupname = '$ gname'" );
Однако проблема, которую я имею, - это поле идентификатора обеих таблиц, не обязательно соответствует (оба автоинкремента), и иногда это может означать, что один временный идентификатор таблиц выше конечной таблицы.
Я использую php, pdo и mysql.
Есть ли способ обойти это?
Объяснение: какие столбцы вы хотите:
"INSERT INTO table2 (`col_1`,`col_2`) SELECT `col_1`, `col_2` FROM table1 WHERE groupname = '$gname'"
Вы также должны знать, что MySQL будет блокировать вставки в таблицу select:
http://en.wikipedia.org/wiki/Blocking_(computing)
Операторы INSERT для таблицы, из которой вы выбираете, не будут выполнены до тех пор, пока не закончится INSERT INTO .. SELECT ...
"INSERT INTO final_table SELECT * FROM temp_table WHERE temp_table.groupname = '$gname'"
Где проблема? Если оба являются auto_increment, и, как вы сказали, temp_table id выше, чем perm_table, вы получите правильный эффект.