mysql中insert与select的嵌套使用解决组合字段插入问题

 更新时间:2014年07月27日 18:19:34   投稿:whsnow  
本节主要介绍了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索引类型总结和使用技巧以及注意事项

    MySQL索引类型总结和使用技巧以及注意事项

    索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型
    2014-04-04
  • MySQL分表自增ID问题的解决方法

    MySQL分表自增ID问题的解决方法

    这篇文章主要为大家详细介绍了MySQL分表自增ID问题的解决方法,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 详解MySQL是如何解决幻读的

    详解MySQL是如何解决幻读的

    这篇文章主要介绍了MySQL是如何解决幻读的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • mysql之key和index的区别及创建删除索引方式

    mysql之key和index的区别及创建删除索引方式

    这篇文章主要介绍了mysql之key和index的区别及创建删除索引方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Linux下MySQL安装配置 MySQL配置参数详解

    Linux下MySQL安装配置 MySQL配置参数详解

    Linux下MySQL安装配置 MySQL配置参数详解,在linux下配置mysql的朋友可以参考下。
    2011-07-07
  • MySQL 视图、函数和存储过程详解

    MySQL 视图、函数和存储过程详解

    视图、函数和存储过程都是 MySQL 中非常重要的数据库对象,它们可以提高数据库的效率和可重用性,使开发人员更加高效地处理数据,这篇文章主要介绍了MySQL 视图、函数和存储过程,需要的朋友可以参考下
    2023-04-04
  • 删除mysql服务的具体方法

    删除mysql服务的具体方法

    在本篇文章里小编给各位分享了是关于删除mysql服务的具体方法,需要的朋友们可以学习下。
    2020-07-07
  • mytop 使用介绍 mysql实时监控工具

    mytop 使用介绍 mysql实时监控工具

    mytop 是一个类似 Linux 下的 top 命令风格的 MySQL 监控工具,可以监控当前的连接用户和正在执行的命令
    2012-05-05
  • MySQL IFNULL判空问题解决方案

    MySQL IFNULL判空问题解决方案

    这篇文章主要介绍了MySQL IFNULL判空问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • mysql found_row()使用详解

    mysql found_row()使用详解

    在参考手册中对found_rows函数的描述是: it is desirable to know how many rows the statement would have returned without the LIMIT. 也就是说,它返回值是如果SQL语句没有加LIMIT的情况下返回的数值。
    2016-05-05

最新评论