当前位置: 首页 > 编程笔记 >

mysql中insert与select的嵌套使用方法

齐学文
2023-03-14
本文向大家介绍mysql中insert与select的嵌套使用方法,包括了mysql中insert与select的嵌套使用方法的使用技巧和注意事项,需要的朋友参考一下

本文讲述了mysql中insert与select的嵌套使用的方法,对于初学MySQL的朋友有一定的借鉴价值。

这里需要实现在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现该功能需求。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:

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

当然,上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,我们可以先将需要查询的字段join起来,然后组成一个视图后再select from就可以了,sql代码如下所示:

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

即每个派生出来的新表都必须指定别名才可以的。

 类似资料:
  • 问题内容: 为什么以下SQL语句不起作用? 它产生此错误: 查询输入必须至少包含一个表或查询。 单个语句有效。 问题答案: Access SQL语句不会让您对以下其中一项使用子查询 按照Piotr的建议,切换到语句即可。 或者,您可以在语句中使用Access Domain Aggregate函数而不是子查询:

  • 本文向大家介绍mysql中insert与select的嵌套使用解决组合字段插入问题,包括了mysql中insert与select的嵌套使用解决组合字段插入问题的使用技巧和注意事项,需要的朋友参考一下 如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使

  • 问题内容: 使用SELECT查询从INSERT使用PHP PDO时,我有一个奇怪的行为。直接在MySQL中测试查询效果很好,我插入了我的行: 但是使用PDO时,我每个用户一次插入了一行(共279行)..这是PHP: 我想念什么?我几乎可以确定这没什么,但是不能让它插入那一行。 谢谢你。 fabien。 问题答案: 并非这是可能的问题,但是您在代码的密码字段中输入了用户名。在查询中,在此插入aesk

  • 问题内容: 我在理解如何执行一些INSERT SELECT时有些困难。 例如我有两个表。 现在,假设我要向表网站添加另一个查询。我得到两个变量,可以说: 我想从用户表中选择John的ID,然后在一条语句中将其插入网站表中。 我该怎么做? 问题答案: 假设您的变量已经正确地转义并且没有注入:

  • 本文向大家介绍MySQL INSERT INTO SELECT到具有AUTO_INCREMENT的表中,包括了MySQL INSERT INTO SELECT到具有AUTO_INCREMENT的表中的使用技巧和注意事项,需要的朋友参考一下 让我们创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出-

  • 问题内容: 我正在尝试从以下位置移出旧数据: 复制所有列。我已经尝试过了,但是没有用: 注意:这些表是相同的,并已设置为主键。 问题答案: 手册中描述了正确的语法。尝试这个: 如果id列是一个自动递增的列,并且您在两个表中都已经有一些数据,那么在某些情况下,您可能希望从列列表中省略该id并生成新的id,以避免插入原来的ID表。如果您的目标表为空,那么这将不是问题。