SQL INSERT INTO SELECT 语句

本章节讲解 SQL INSERT INTO SELECT 语句


SQL INSERT INTO SELECT 语句

INSERT INTO SELECT 语句从一个表复制数据并将其插入另一个表中。

INSERT INTO SELECT 语句要求源表和目标表中的数据类型匹配。

注意: 目标表中的现有记录不受影响。
INSERT INTO SELECT 语法

将所有列从一个表复制到另一个表:

  1. INSERT INTO table2
  2. SELECT * FROM table1
  3. WHERE condition ;

仅将一个表中的某些列复制到另一个表中:

  1. INSERT INTO table2 ( column1 , column2 , column3 , ...)
  2. SELECT column1 , column2 , column3 , ...
  3. FROM table1
  4. WHERE condition ;

Demo 数据库

在本教程中,我们将使用著名的 Northwind 示例数据库。

下是从 "Customers" 表中选择的内容:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1

Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda。 de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

以及从 "Suppliers" 表中选择:

SupplierIDSupplierNameContactNameAddressCityPostal CodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA

SQL INSERT INTO SELECT 实例

以下 SQL 语句将 "Suppliers" 复制到 "Customers" 表中(未填充数据的列将包含 NULL):

实例
  1. INSERT INTO Customers (CustomerName, City, Country)
  2. SELECT SupplierName, City, Country FROM Suppliers;

以下 SQL 语句将 "Suppliers" 复制到 "Customers" 表中(填写所有列):

实例
  1. INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
  2. SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;

以下 SQL 语句仅将德国供应商(Supplier)复制到 "Customers" 表中:

实例
  1. INSERT INTO Customers (CustomerName, City, Country)
  2. SELECT SupplierName, City, Country FROM Suppliers
  3. WHERE Country='Germany';