mysql临时表插入数据至原表,通过主键过滤条件
时间: 2023-07-28 20:17:14 浏览: 154
暂时插入sql数据库
如果你需要通过主键过滤条件将MySQL临时表中的数据插入到原表中,可以使用INSERT INTO SELECT语句并将主键作为过滤条件。
假设原表的表结构如下:
```sql
CREATE TABLE `original_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
临时表的表结构如下:
```sql
CREATE TEMPORARY TABLE `#temp_table` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
则可以使用以下语句将临时表中的数据插入到原表中:
```sql
INSERT INTO `original_table` (`id`, `name`)
SELECT `id`, `name`
FROM `#temp_table`
WHERE `id` NOT IN (SELECT `id` FROM `original_table`);
```
以上语句会将临时表中存在但原表中不存在的数据插入到原表中。其中,`id`是原表的主键,需要在INSERT INTO和SELECT语句中同时指定;WHERE子句中的子查询用于过滤掉原表中已存在的数据。
需要注意的是,如果临时表中存在重复的主键值,以上语句会报主键冲突的错误。此时可以使用INSERT IGNORE语句或ON DUPLICATE KEY UPDATE语句来处理重复键值的情况。
阅读全文