Instrukcja INSERT w rzeczywistości ma składnię do robienia właśnie tego. O wiele łatwiej jest jednak określić nazwy kolumn niż wybrać „*”:
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Lepiej to wyjaśnię, ponieważ z jakiegoś powodu ten post otrzymuje kilka głosów przeciw.
Składnia INSERT INTO ... SELECT FROM dotyczy sytuacji, gdy wstawiana tabela ("nowa_tabela" w moim przykładzie powyżej) już istnieje. Jak powiedzieli inni, składnia SELECT ... INTO służy do tworzenia nowej tabeli jako części polecenia.
Nie określiłeś, czy nowa tabela ma zostać utworzona jako część polecenia, więc INSERT INTO ... SELECT FROM powinno wystarczyć, jeśli Twoja tabela docelowa już istnieje.