您当前的位置: 首页 > 数据库教程 > MySQL教程 > 解析MySQL中INSERT INTO SELECT的使用

解析MySQL中INSERT INTO SELECT的使用

作者:不详 来源:网络 发布时间: 2014-07-24 17:53 点击:
1. 语法介绍 有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现: INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表

解析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) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS tb

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

  2. 语法错误注意

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

  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中INSERT INTO SELECT不能加VALUES,即不能写成如下形式:

  INSERT INTO db1_name(field1,field2) VALUES SELECT field1,field2 FROM db2_name

  否则也会报错:You have an error in your SQL syntax
分享到:
本文"解析MySQL中INSERT INTO SELECT的使用"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4