Insert all values of a table into another table in SQL

The insert statement actually has a syntax for doing just that. It’s a lot easier if you specify the column names rather than selecting “*” though:

INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...

I’d better clarify this because for some reason this post is getting a few down-votes.

The INSERT INTO … SELECT FROM syntax is for when the table you’re inserting into (“new_table” in my example above) already exists. As others have said, the SELECT … INTO syntax is for when you want to create the new table as part of the command.

You didn’t specify whether the new table needs to be created as part of the command, so INSERT INTO … SELECT FROM should be fine if your destination table already exists.

Leave a Comment