C mysql添加_MYSQL将表 B C 插入表A方法

具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:

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

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

2.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的形式来组合字段。需要注意的是嵌套查询部分最后一定要有设置表别名,如下:

3.SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb

即最后的as tb是必须的(当然tb这个名称可以随意取),即指定一个别名,否则在mysql中会报如下错误:

4.ERROR 1248 (42000): Every derived TABLE must have its own alias

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

在MySql4.0.12中,用" create table bak_name as select * from original_name"语句后,生成的bak 表没有主键及索引的,用到的时候一点要注意.可以先建一个和要备份的表结构一样的表back_name,用以下方法倒入数据

insert into bak_table select * from original_name 这个方法

1、复制表结构以及数据

CREATE TABLE 新表

SELECT * FROM 旧表

2、只复制表结构

a、 CREATE TABLE 新表

SELECT * FROM 旧表 WHERE 1=2

即:让WHERE条件不成立.

b、:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了)

CREATE TABLE 新表

LIKE 旧表

3、复制旧表数据到新表(两表结构一样)

INSERT INTO 新表

SELECT * FROM 旧表

4、复制旧表数据到新表(两表结构不一样)

INSERT INTO 新表(字段1,字段2,…….)

SELECT 字段1,字段2,…… FROM 旧表

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值