How do you INSERT INTO VALUES from a SELECT FROM in every database in SQL?

Richard C.

The Problem

Although SQL has a series of standards, managed by ISO, all the database servers differ slightly in their support and implementation. If you want to insert rows into one table from another, what syntax should you use that will work in any implementation of SQL, such as MySQL, PostgreSQL, and SQL Server?

Assume you have the following two tables in your database:

CREATE TABLE Person1 ( Id INT PRIMARY KEY, Name VARCHAR(255) ); CREATE TABLE Person2 ( Id INT PRIMARY KEY, Name VARCHAR(255) ); INSERT INTO Person1(Id, Name) VALUES (1, 'Amir'), (2, 'Sofia'), (3, 'Aya'), (4, 'Mateo'); INSERT INTO Person2(Id, Name) VALUES (5, 'Leila'), (6, 'Yara'), (7, 'Ndidi'), (8, 'Santiago');

The Solution

The most universal syntax to import rows from Person2 into Person1 is the following:

INSERT INTO Person1 (Id, Name) SELECT Id, Name FROM Person2 WHERE Person2.Id > 6

Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Share on Twitter
Bookmark this page
Ask a questionJoin the discussion

Related Answers

A better experience for your users. An easier life for your developers.

© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.