MySQL将查询结果插入到数据表中

INSERT语句还可以将SELECT语句查询出来的数据插入到另一个表中,即可快速地从一个或多个表中向一个表中插入多个行。
这样,可以方便不同表之间进行数据交换。

基本的语法格式如下:
将“表名2”中查询出来的记录插入到“表名1”中以后,“表名2”中仍然保存着原来的记录。

INSERT INTO 表名1(字段列表1) SELECT 字段列表2 FROM 表名2 WHERE 条件表达式;

    表名1:表示记录插入到哪个表中。
    字段列表1:表示为哪些字段赋值。
    字段列表2:表示从表中查询出哪些字段的数据。
    表名2:表示记录是从哪个表中查询出来的。
    条件表达式:表示设置SELECT语句的查询条件。

提示:
使用这种方法时,必须保证“字段列表1”和“字段列表2”中的字段个数是一样的,同时,也必须保证每个对应的字段的数据类型是一样的。如果数据类型不一样,数据库系统会报错。然后,阻止INSERT语句向下执行。

实例

从stu表中查询所有的记录,并将其插入到student表中。

  1. 创建一个名为stu的数据表,其表结构与student表结构相同。SQL语句如下:
CREATE TABLE stu(
    id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    xuesheng VARCHAR(10) NOT NULL,
    yuwen INT(4),
    shuxue INT(4),
    yingyu INT(4));
  1. 向stu数据表中添加两条记录。INSERT语句如下:
INSERT INTO stu(id,xuesheng,yuwen,shuxue,yingyu)
           VALUES(1001,'one',79,66,90), (1002,'two',62,68,73);
  1. 将stu数据表中所有的记录插入到student数据表中。SQL语句如下:
INSERT INTO student(id,xuesheng,yuwen,shuxue,yingyu)
SELECT id,xuesheng,yuwen,shuxue,yingyu FROM stu;

提示
这个例子中使用的stu数据表和student数据表的定义相同,事实上,MySQL不关心SELECT返回的列名,它根据列的位置进行插入,SELECT的第1列对应待插入表的第1列,第2列对应待插入表的第2列,等等。即使不同结果的表之间也可以方便的转移数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值