mysql中insert into select from的使用
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:
例如:
两种表结构一样:
所以需要将user表数据同步到T-user中使用语句:
INSERT INTO t_user SELECT * FROM USER 就可以了
可以看出已经同步了,如果两个表结构不一样呢:
例如:
CREATE TABLE `tr_user` ( `sname` varchar(255) DEFAULT NULL, `sage` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `user` ( `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
执行语句为:
INSERT INTO tr_user (sname, sage)
SELECT
NAME AS sname,
age AS sage
FROM
USER
INSERT INTO tr_user (sname, sage)
SELECT
NAME ,
age
FROM
USER
`tr_user`
第二种也是可以的
如果是多表呢:
就需要新建一个试图来进行:
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的形式来组合字段。需要注意的是嵌套查询部分最后一定要有设置表别名
笔记转移,由于在有道云的笔记转移,写的时间可能有点久,如果有错误的地方,请指正