MySQL INSERT INTO SELECT
转载地址 https://yuanjiaoc.com/tutorial/article/10152
在本教程中,您将学习如何使用MySQL INSERT INTO SELECT
语句向表中插入数据,其中数据来自SELECT
语句的结果。
MySQL INSERT INTO SELECT 概述
在上一篇教程中,您学习了如何使用insert
语句和values
子句中指定的列值列表将一行或多行插入到表中。
INSERT INTO table_name(c1,c2,...)
VALUES(v1,v2,..);
除了在values
子句中使用行值外,还可以使用SELECT
语句的结果作为INSERT
语句的数据源。
下面举例说明INSERT INTO SELECT
语句的语法:
INSERT INTO table_name(column_list)
SELECT
select_list
FROM
another_table
WHERE
condition;
在这种语法中,可以使用SELECT
语句而不是VALUES
子句。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)
);
注意,您将在后续教程中学习如何创建新表。现在,您只需要执行这条语句来创建suppliers
表。
假设所有来自美国加州的客户都成为公司的供应商。以下查询查找位于美国加利福尼亚州的所有客户:
SELECT
customerNumber,
customerName,
phone,
addressLine1,
addressLine2,
city,
state,
postalCode,
country
FROM
customers
WHERE
country = 'USA' AND
state = 'CA';
第二,使用INSERT INTO…SELECT
语句将位于美国加州的客户从customers
表插入到supplier
表:
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';
它返回以下消息,表明已成功插入 11 行。
11 row(s) affected Records: 11 Duplicates: 0 Warnings: 0
第三,通过从 suppliers
表中查询数据来验证插入:
SELECT * FROM suppliers;