数据库教程:解析MySQL中INSERT INTO SELECT的使用分享

1.语法介绍
有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:
INSERTINTOdb1_name(field1,field2)SELECTfield1,field2FROMdb2_name
 
上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECTFROM就可以了:

INSERTINTOa(field1,field2)SELECT*FROM(SELECTb.f1,c.f2FROMbJOINc)AStb

其中f1是表b的字段,f2是表c的字段,通过JOIN查询就将分别来自表b和表c的字段进行了组合,然后再通过SELECT嵌套查询插入到表a中,这样就满足了这个场景了,如果需要不止2个表,那么可以多个JOIN的形式来组合字段。

2.语法错误注意
需要注意的是嵌套查询部分最后一定要有设置表别名,如下:

SELECT*FROM(SELECTf1,f2FROMbJOINc)AStb

即最后的AStb是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报如下错误:

ERROR1248(42000):EveryderivedTABLEmusthaveitsownalias
 
另外,MySQL中INSERTINTOSELECT不能加VALUES,即不能写成如下形式:

INSERTINTOdb1_name(field1,field2)VALUESSELECTfield1,field2FROMdb2_name
 
否则也会报错:YouhaveanerrorinyourSQLsyntax

您可能感兴趣的文章:数据库插入数据之selectintofrom与insertintoselect区别详解insertintoselect和selectinto的使用和区别介绍SELECTINTO和INSERTINTOSELECT两种表复制语句简单介绍INSERTINTOSELECT语句与SELECTINTOFROM语句的一些区别insertselect与selectinto的用法使用说明mssqlinsertinto和insertintoselect性能比较selectinto和insertintoselect两种表复制语句insertintotbl()select*fromtb2中加入多个条件SELECTINTO和INSERTINTOSELECT两种表复制语句详解(SQL数据库和Oracle数据库的区别)

标签: TO IN INSERT INTO SQL

浅析一个MYSQL语法(在查询中使用count)的兼容性问题

MySQL 关于表复制 insert into 语法的详细介绍

上述就是数据库技术:解析MySQL中INSERT INTO SELECT的使用分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/910807.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐