跳到主要内容

SQL INSERT INTO SELECT语句

提示

1.INSERT INTO SELECT的基本用法:SQL中的INSERT INTO SELECT语句用于将一张表的记录复制到另一张现有表中。例如,INSERT INTO OldCustomers SELECT * FROM Customers;Customers 表中的所有记录复制到 OldCustomers 表中。

2.复制选定的列:可以仅从一个表复制选定的列到另一个表。例如,INSERT INTO OldCustomers(customer_id, age) SELECT customer_id, age FROM Customers; 仅将 Customers 表中的 customer_idage 列的记录复制到 OldCustomers 表。

3.复制满足特定条件的记录:可以使用 WHERE 子句与 INSERT INTO SELECT 结合,以复制满足特定条件的记录。例如,INSERT INTO OldCustomers SELECT * FROM Customers WHERE country = 'USA'; 仅复制 country 列值为 USA 的行。

SQL 的 INSERT INTO SELECT 语句用于将记录从一个表复制到另一个现有表。

示例

INSERT INTO OldCustomers
SELECT *
FROM Customers;

这里,SQL 命令将 Customers 表中的所有记录复制到 OldCustomers 表。

INSERT INTO SELECT 语法

SQL INSERT INTO SELECT 语句的语法是:

INSERT INTO destination_table (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM source_table;

这里,

  • destination_table 是要插入数据的表的名称
  • column1, column2, column3, ... 是要被复制的列的名称
  • source_table 是您想要选择数据的表的名称。

注意: 要运行此命令,

  • 数据库中必须已经有一个名为 OldCustomers 的表
  • OldCustomers 表和 Customers 表的列名必须匹配

如果您想将数据复制到一个新表(而不是复制到现有表),您应该使用 SELECT INTO 语句。

仅复制选定的列

我们也可以仅从一个表复制选定的列到另一个表。例如,

INSERT INTO OldCustomers(customer_id, age)
SELECT customer_id, age
FROM Customers;

这里,SQL 命令仅将 Customers 表中的 customer_idcountry 列的记录复制到 OldCustomers 表。

注意: 如果 OldCustomers 表中除 customer_idage 以外还有其他列,那些列的值将是 NULL

复制满足条件的记录

我们可以使用 WHERE 子句与 INSERT INTO 一起复制满足特定条件的行。例如,

INSERT INTO OldCustomers
SELECT *
FROM Customers
WHERE country = 'USA';

这里,SQL 命令仅复制国家列值为 USA 的行。

从两个表复制数据到一个表

我们还可以使用 JOIN 子句与 INSERT INTO SELECT 结合,从两个不同的表复制记录。例如,

INSERT INTO CustomersOrders
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
JOIN Orders
ON Customers.customer_id = Orders.customer_id;

这里,SQL 命令将 Customers 表的 customer_idfirst_name 以及 Orders 表的 amount 复制到现有表 CustomersOrders

要了解更多,请访问 SQL JOIN

注意: 如果表中已有数据,INSERT INTO SELECT 语句将在表中追加新行。

推荐阅读