TOP

SQL INSERT INTO SELECT

INSERT INTO SELECT Descrizione

L'istruzione SQL INSERT INTO SELECT copia i dati da una tabella e li inserisce in un'altra tabella.

L'istruzione INSERT INTO SELECT richiede che i tipi di dati nelle tabelle di origine e di destinazione corrispondano.


I record esistenti nella tabella di destinazione rimangono e non vengono influenzati dal processo di copia.

INSERT INTO SELECT Sintassi

Copia tutte le colonne da una tabella all'altra:

INSERT INTO table2
SELECT * 
FROM table1
WHERE condition

Copia solo alcune colonne da una tabella all'altra:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

Banca dati dimostrativa

In questo tutorial utilizzeremo il famoso database di esempio "Northwind".

Di seguito è riportato un esempio della tabella "Customers" ("Clienti"):

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

E l'esempio dalla tabella "Suppliers" ("Fornitori"):

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT Esempi

La seguente query SQL copia "Suppliers" ("Fornitori") in "Customers" ("Clienti") (le colonne non popolate con dati conterranno NULL):

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers

Un'altra versione della query SQL copia i dati dalla tabella "Fornitori" a "Clienti" (riempie tutte le colonne):

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country 
FROM Suppliers

La seguente istruzione SQL copia solo i fornitori tedeschi nella tabella Clienti:

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers
WHERE Country = 'Germany'