本文章主要讲解INSERT ... SELECT
和INSERT ... ON DUPLICATE KEY UPDATE
这种比较特殊的数据操作(data manipulation)的SQL。
INSERT INTO … SELECT语句
新建两个测试表,并加入数据:
CREATE TABLE `test2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
使用该语句可以将select语句得到的结果快速插入到一个表中
insert into test (content, title) select content, title from test where test.id = 1;
该select语句可以查询其他的表,比如:
INSERT INTO table (id) SELECT table2.id FROM table2 WHERE table2.id > 100;