赞
踩
转载地址 https://yuanjiaoc.com/tutorial/article/10152
在本教程中,您将学习如何使用MySQL INSERT INTO SELECT
语句向表中插入数据,其中数据来自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
语句非常有用。
首先,创建一个名为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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。