insert into table from another table
1、场景
有两个表:t_alpha
和t_beta
,它们的表结构相同,如下所示:
- t_alpha
CREATE TABLE `t_alpha` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`number` varchar(15) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`description` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
- t_beta
CREATE TABLE `t_beta` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`description` varchar(200) DEFAULT NULL,
`number` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
t_alpha表数据如下,需要把t_alpha表的数据全部插入到t_beta表,使用INSERT INTO Table1 SELECT * FROM Table2;
的方式。
2、问题
insert into t_beta (select * from t_alpha);
在执行SQL时报错:
[SQL] insert into t_beta (select * from t_alpha);
[Err] 1406 - Data too long for column 'number' at row 1
3、解决方式
使用指定列名的方式即可:
insert into t_beta(name, number, description)(select name, number, description from t_alpha);