mysql中insert与select的嵌套使用解决组合字段插入问题
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:
INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name
当然,上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,我们可以先将需要查询的字段join起来,然后组成一个视图后再select from就可以了:
INSERT INTO a(field1,field2) SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
其中f1是表b的字段,f2是表c的字段,通过join查询就将分别来自表b和表c的字段进行了组合,然后再通过select嵌套查询插入到表a中,这样就满足了我们这个场景了,如果需要不止2个表,那么可以多个join的形式来组合字段。需要注意的是嵌套查询部分最后一定要有设置表别名,如下:
SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
即最后的as tb是必须的(当然tb这个名称可以随意取),即指定一个别名,否则在mysql中会报如下错误:
ERROR 1248 (42000): Every derived TABLE must have its own alias
即每个派生出来的新表都必须指定别名才可以的。
相关推荐
-
Mysql中LAST_INSERT_ID()的函数使用详解
最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表.研究了一番决定使用Mysql提供了一个LAST_INSERT_ID()的函数. 复制代码 代码如下: LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column by
-
mysql insert语句操作实例讲解
insert的语法 复制代码 代码如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIORITY | DELAYED | HIGH
-
mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )
INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INT
-
解析MySQL中INSERT INTO SELECT的使用
1. 语法介绍有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,可以使用如下的语句来实现:INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了.对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了: INSERT INTO a (field1,field2)
-
Mysql中Insert into xxx on duplicate key update问题
例如,如果列a被定义为unique,并且值为1,则下列语句有同样的效果,也就是说一旦出入的记录中存在a=1的情况,直接更新c = c + 1,而不执行c = 3的操作. 复制代码 代码如下: insert into table(a, b, c) values (1, 2, 3) on duplicate key update c = c + 1;1 update table set c = c + 1 where a = 1; 另外值得一提的是,这个语句知识mysql中,而标准sql语句中是没有
-
正确使用MySQL INSERT INTO语句
以下的文章主要介绍的是MySQL INSERT INTO语句的实际用法以及MySQL INSERT INTO语句中的相关语句的介绍,MySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好. INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES (expression,...),(...),... MySQLINSERT INTO SELEC
-
MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程
Email里面收到朋友laopan的求助 laopan:insert into HudsonResult(JobID,EnvironmentID,FirstSessionID,RerunSessionID,State,Desp,OtherInfo) values ((select ID from Hudson where Stream='A7510_R52_Integration' and State='N' and pakName='needCompile' and User='jinhaiz
-
MySql中使用INSERT INTO语句更新多条数据的例子
我们知道当插入多条数据的时候insert支持多条语句: 复制代码 代码如下: INSERT INTO t_member (id, name, email) VALUES (1, 'nick', 'nick@126.com'), (4, 'angel','angel@163.com'), (7, 'brank','ba198@126.com'); 但是对于更新记录,由于update语法不支持一次更新多条记录,只能一条一条执行: 复制代码 代码如下: UPDATE t_mem
-
MySql insert插入操作的3个小技巧分享
1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb...等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A中,SQL语句可以这样写: 复制代码 代码如下: insert into A(id,cola) select id,cola from B where colb>1000 2.插入时排除(忽略)重复记录 现表A中有一部分记录了,再做如1中的插入操作可能遇到重复的key导致操作失败 复制代码 代码如下:
-
mysql 操作总结 INSERT和REPLACE
言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UPDATE以及DELETE.在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句. 一.INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据.这两条语句的语法类似.它们的主要区别是如何处理重复的数据. 1. INSERT的一般用法 MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录
随机推荐
- C#微信分享代码
- PHP imagecreatefrombmp 从BMP文件或URL新建一图像
- MediaPlayer 在线播放器代码
- DISCUZ论坛的UBB编辑器(增加灵活调用,支持ASP UBB解析)打包下载
- Js与下拉列表处理问题解决
- javascript实现抽奖程序的简单实例
- javascript一元操作符(递增、递减)使用示例
- Web开发异常行为排查常用方法图文介绍
- .net开发中几个重要的认识误区小结
- Php 构造函数construct的前下划线是双的_
- YII Framework框架教程之使用YIIC快速创建YII应用详解
- CodeIgniter多语言实现方法详解
- 解决phpmyadmin中缺少mysqli扩展问题的方法
- 老生常谈C++中实参形参的传递问题
- Ubuntu上安装MySQL+问题处理+安全优化
- 微信小程序 蓝牙的实现实例代码
- 简介alert()与console.log()的不同
- ASP.NET 网站开发中常用到的广告效果代码
- 总结的5个C#字符串操作方法分享
- Java中泛型使用实例详解