mysql从一张表中取出数据插入到另一张表

最近有这样一个需求,原来的订单表wp_order设计不合理,原来的订单表没有订单详表,只有一张主表。现在是要重构订单表,分为订单主表wp_order_master和订单详表wp_order_detail,需要把原来的wp_order中的数据拆分后插入这两张表。

我这里总结有3种mysql插入语句方式,分别是:
以下表1为目标表,表2为原表

  1. 表结构一样
insert into 表1select * from 表2

这个方式说白了就跟复制一样,要求2张表的所有字段一致,否则报错。

  1. 表结构不一样
insert into 表1 (列名1,列名2,列名3) select  列1,列2,列3 from 表2

这种也不能说是表结构不一样,其实就是有选择性的从表2取出数据对应表1字段插入。

  1. 只从另外一个表取部分字段
insert into 表1 (列名1,列名2,列名3) values(列1,列2,(select 列3 from 表2));

这种方式适用的情况是,在从表2取出部分字段数据的同时,表1有新的字段也需要数据,相当于第2种方式的升级版。

我这里采用第2种方式:

INSERT INTO wp_order_master (id,order_number,order_code,uid,cTime,pay_time,total_price,is_pay,
alipay_price,wechat_price,balance_price,cash_price,union_price,active_id,active_price,coupon_id,coupon_price,
integral_num,integral_price,erase_price,use_packet_id,order_from) SELECT id,order_number,order_code,uid,cTime,pay_time,total_price,is_pay,
alipay_price,wechat_price,balance_price,cash_price,union_price,active_id,active_price,coupon_id,coupon_price,
integral_num,integral_price,erase_price,use_packet_id,order_from FROM wp_order WHERE id BETWEEN 10 AND 20;

里面因为测试,select的where后面加了条件。
这里也把原order表的id插入了order_master,作为主键更新order_detail表。

你可能感兴趣的:(Mysql,mysql,数据库,sql)