SQL Server 有 SELECT * INTO tableA from tableB这样的语法将一个表的数据复制到另外一个表里面,即便两个表中存在名不一样filed(可以用“as”改为和目标表一样,前提是类型要兼容)。
但MySql不支持SELECT INTO这样的表达式
这里我们可以INSERT INTO tableA SELECT tableB.* FROM tableB来实现
假设我们有
表 moduleinfo:
CREATE TABLE `moduleinfo` (
`id` bigint(20) NOT NULL auto_increment,
`moduleId` varchar(50) default NULL,
`playFlag` varchar(50) default NULL,
`moduleName` varchar(50) default ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
表 treeinfo:
CREATE TABLE `treeinfo` (
`id` bigint(20) NOT NULL auto_increment,
`treeId` varchar(50) default NULL,
`treeName` varchar(50) default NULL,
`treeType` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk CHECKSUM=1 DELAY_KEY_WRITE=1;
现在由于某种原因需要将moduleinfo的数据插入到treeinfo中
那么就可以用下面的这条语句实现
INSERT INTO treeinfo
SELECT m.id,m.moduleId as treeId,m.moduleName as treeName,m.playFlag as treeType
FROM moduleinfo m
在网上找在mysql中实现类似SELECT INTO的方法有很多,但找到的基本上都要创建临时表,不是我当前情形需要的解决方案
----我只是基于测试,需要从另外一个表里导入一些假数据