sql 向表中插入新数据时,同时插入另一张表中某些字段的数据

发布于:2023-02-17 ⋅ 阅读:(425) ⋅ 点赞:(0)

sql 向表中插入新数据时,同时插入另一张表中某些字段的数据


一、 语法格式

  1. 向表中插入新数据时,同时插入另一张表中某些字段的数据
    --  向一张表中插入数据,一部分字段的数据为自定义,另一部分字段的数据来源于另一张表
    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

注意:
只有 nameprofile 两个字段中的数据来自spy_family表,
idanimation,两个字段中的数据为我们自定义的:uuid()和’间谍过家家’。

  • 简单来说:上述sql实现了在insert时,不仅能插入我们手动输入的数据,还能同时插入其他表中的数据

三、 语法扩展

  1. 从一个表中复制所有的列插入到另一个已存在的表中

    INSERT INTO table1
    SELECT * FROM table2;
    
  2. 从一个表中复制某些列插入到另一个已存在的表中

    INSERT INTO table1
    ( a, b, c, ...)
    SELECT a, b, c, ...
    FROM table2;
    

四、后记

原以为insert into…select语句,只是用于复制一张表中的全部数据或部分数据,
没想到还能在复制其他表中的数据的同时,插入自己定义的新数据,
第一次用这样的写法,还挺有趣,记录一下。

间谍过家家

ps:最近在看间谍过家家,阿尼亚真可爱。以后要是有幸遇到一位能厮守终生、白头偕老的女孩,希望生个像阿尼亚一样可爱的女儿。


网站公告

今日签到

点亮在社区的每一天
去签到