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_id
和 age
列的 记录复制到 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_id
和 country
列的记录复制到 OldCustomers
表。
注意: 如果 OldCustomers
表中除 customer_id
和 age
以外还有其他列,那些列的值将是 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_id
和 first_name
以及 Orders
表的 amount
复制到现有表 CustomersOrders
。
要了解更多,请访问 SQL JOIN。
注意: 如果表中已有数据,INSERT INTO SELECT
语句将在表中追加新行。
推荐阅读