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

Richard C.
jump to solution

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

Considered "not bad" by 4 million developers and more than 150,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.

Sentry