表复制某些字段的操作sql

一。 把 一个表中的某些字段复制到另一个表中

直接插入值

复制代码
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);

表之间的插入

复制代码
insert into sys_user_permission(userId,nickName,status)
select userId,nickname,status from sys_user
where not exists(
	select 1 from sys_user_permission p
	where p.userId = sys_user.userId
);

where后面的意思是,当两个表经过筛选后,只插入第一条。也就是userId唯一

二、在一的基础上,我发现漏了一个字段,我想复制deptId字段

1.更新不插入新纪录

复制代码
update p set p.deptId = u.deptId from sys_user_permission p
join sys_user u on p.userId = u.userId


JOIN 的原因是:让数据库"把两张表按某个条件拼到一起",这样才能拿到另一张表的字段值来
把 sys_user 和 sys_user_permission 按 userId 拼在一起,这样我就能用 sys_user.deptId 去更新 sys_user_permission.deptId。

2.更新并插入新纪录

复制代码
MERGE sys_user_permission AS target
USING sys_user AS src
ON target.userId = src.userId

WHEN MATCHED THEN
    UPDATE SET
        target.deptId   = src.deptId,
        target.nickname = src.nickname

WHEN NOT MATCHED THEN
    INSERT (userId, nickname, deptId)
    VALUES (src.userId, src.nickname, src.deptId);
相关推荐
TDengine (老段)13 分钟前
益和热力性能优化实践:从 SQL Server 到 TDengine 时序数据库,写入快 20 秒、查询提速 5 倍
大数据·数据库·物联网·性能优化·时序数据库·tdengine·1024程序员节
yolo_Yang1 小时前
【MySQL】mysqldump使用方法
数据库·mysql·oracle
codeyanwu1 小时前
SQL 学习笔记
笔记·sql·学习
玩转测试开发1 小时前
xshell设置跳板机登录内网服务器
运维·服务器·数据库
你不是我我1 小时前
【Java 开发日记】运行时有出现过什么异常?
数据库·oracle
夏玉林的学习之路2 小时前
正则表达式
数据库·c++·qt·mysql·正则表达式
JIngJaneIL2 小时前
财务管理|基于SprinBoot+vue的个人财务管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·财务管理系统
JIngJaneIL3 小时前
口腔健康系统|口腔医疗|基于java和小程序的口腔健康系统小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·口腔医疗小程序
白帽子黑客罗哥3 小时前
常见Web安全漏洞全解析:从原理到防御的实战指南
数据库·web安全·渗透测试·漏洞利用·权限提升
寒山李白5 小时前
IDEA连接MySQL服务器数据库指南
java·数据库·mysql·intellij-idea·idea·database