sql 向表中插入新数据时,同时插入另一张表中某些字段的数据
一、 语法格式
- 向表中插入新数据时,同时插入另一张表中某些字段的数据
-- 向一张表中插入数据,一部分字段的数据为自定义,另一部分字段的数据来源于另一张表 INSERT INTO table1 ( a, b, c ) SELECT ‘自己定义的数据’, b, -- table2中的字段b c -- table2中的字段c FROM table2;
二、 举例
1. 动漫角色汇总表 (anime_characters)
字段名 | 字段说明 |
---|---|
id | 主键 |
animation | 动漫名 |
name | 角色名 |
profile | 角色简介 |
2. 间谍过家家角色表(spy_family)
字段名 | 字段说明 |
---|---|
id | 主键 |
name | 角色名 |
profile | 角色简介 |
3. sql要求:
- 向动漫角色汇总表 (anime_characters)中插入新数据,其中name和profile字段来自间谍过家家角色表(spy_family)
insert into anime_characters
(
id,
animation,
name,
profile
)
select
uuid(), --自动生成uuid的函数
'间谍过家家',
name,
profile
from spy_family
注意:
只有 name 和 profile 两个字段中的数据来自spy_family表,
id 和 animation,两个字段中的数据为我们自定义的:uuid()和’间谍过家家’。
- 简单来说:上述sql实现了在insert时,不仅能插入我们手动输入的数据,还能同时插入其他表中的数据
三、 语法扩展
-
从一个表中复制所有的列插入到另一个已存在的表中
INSERT INTO table1 SELECT * FROM table2;
-
从一个表中复制某些列插入到另一个已存在的表中
INSERT INTO table1 ( a, b, c, ...) SELECT a, b, c, ... FROM table2;
四、后记
原以为insert into…select语句,只是用于复制一张表中的全部数据或部分数据,
没想到还能在复制其他表中的数据的同时,插入自己定义的新数据,
第一次用这样的写法,还挺有趣,记录一下。
ps:最近在看间谍过家家,阿尼亚真可爱。以后要是有幸遇到一位能厮守终生、白头偕老的女孩,希望生个像阿尼亚一样可爱的女儿。