Все эти ответы запускают один и тот же запрос для INSERT и DELETE. Как упоминалось ранее, это рискует, когда DELETE забирает записи, вставленные между операторами, и может быть медленным, если запрос сложный (хотя умные механизмы «должны» быстро выполнить второй вызов).
Правильный способ (при условии, что INSERT находится в новой таблице) - это УДАЛИТЬ против table1, используя ключевое поле table2.
Удаление должно быть:
DELETE FROM tbl_OldTableName WHERE id in (SELECT id FROM tbl_NewTableName)
Извините за мой синтаксис, я прыгаю между движками, но вы поняли.