MySQL INSERT INTO SELECT[猿教程]

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;

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值