这个教程不错,备份一下。MySQL 教程网
在上一教程中,您学习了如何使用INSERT语句以及VALUES子句中指定的列值列表向表中插入一行或多行。
INSERT INTO table_name(c1,c2,...)
VALUES(v1,v2,..);Code language: SQL (Structured Query Language) (sql)
除了在VALUES子句中使用行值之外,您还可以使用SELECT语句的结果作为INSERT语句的数据源。
下面说明了INSERT INTO SELECT语句的语法:
INSERT INTO table_name(column_list)
SELECT
select_list
FROM
another_table
WHERE
condition;Code language: SQL (Structured Query Language) (sql)
在此语法中,您可以使用VALUES语句,而不是使用SELECT子句。 SELECT语句可以从一个或多个表中检索数据。
当您想要将数据从其他表复制到一个表或将多个表中的数据汇总到一个表中时, INSERT INTO SELECT语句非常有用。
MySQL INSERT INTO SELECT示例
首先,创建一个名为suppliers新表:
CREATE TABLE suppliers (
supplierNumber INT AUTO_INCREMENT,
supplierName VARCHAR(50) NOT NULL,
phone VARCHAR(50),
addressLine1 VARCHAR(50),
addressLine2 VARCHAR(50),
city VARCHAR(50),
state VARCHAR(50),
postalCode VARCHAR(50),
country VARCHAR(50),
customerNumber INT,
PRIMARY KEY (supplierNumber)
);Code language: SQL (Structured Query Language) (sql)
请注意,您将在后续教程中学习如何创建新表。现在,您只需执行此语句即可创建suppliers表。
假设所有来自California, USA的客户都成为该公司的供应商。以下查询查找位于美国加利福尼亚州的所有客户:
SELECT
customerNumber,
customerName,
phone,
addressLine1,
addressLine2,
city,
state,
postalCode,
country
FROM
customers
WHERE
country = 'USA' AND
state = 'CA';Code language: SQL (Structured Query Language) (sql)

其次,使用INSERT INTO ... SELECT语句将客户表中位于California USA州的客户插入到suppliers customers中:
INSERT INTO suppliers (
supplierName,
phone,
addressLine1,
addressLine2,
city,
state,
postalCode,
country,
customerNumber
)
SELECT
customerName,
phone,
addressLine1,
addressLine2,
city,
state ,
postalCode,
country,
customerNumber
FROM
customers
WHERE
country = 'USA' AND
state = 'CA';Code language: SQL (Structured Query Language) (sql)
它返回以下消息,表明已成功插入 11 行。
11 row(s) affected Records: 11 Duplicates: 0 Warnings: 0Code language: SQL (Structured Query Language) (sql)
第三,通过查询suppliers表中的数据来验证插入:
SELECT * FROM suppliers;Code language: SQL (Structured Query Language) (sql)
这是输出:

在VALUES列表中使用SELECT语句
首先,创建一个名为stats的新表:
CREATE TABLE stats (
totalProduct INT,
totalCustomer INT,
totalOrder INT
);Code language: SQL (Structured Query Language) (sql)
其次,使用INSERT语句插入来自SELECT语句的值:
INSERT INTO stats(totalProduct, totalCustomer, totalOrder)
VALUES(
(SELECT COUNT(*) FROM products),
(SELECT COUNT(*) FROM customers),
(SELECT COUNT(*) FROM orders)
);Code language: SQL (Structured Query Language) (sql)
在这个例子中:
三、从表stats中查询数据:
SELECT * FROM stats;Code language: SQL (Structured Query Language) (sql)
![]()
在本教程中,您学习了如何使用 MySQL INSERT INTO SELECT语句将数据从结果集中插入到表中
本博客是 MySQL 教程,介绍了使用语句将数据从结果集中插入到表中的方法。除在子句用行值,还能用语句结果作数据源。通过创建新表、插入数据、查询验证等示例,展示了如何将其他表数据复制或汇总到一个表中。





