当前位置: 首页 > news >正文

mysql两张关联表批量更新一张表存在数据,而另一张表不存在数据的sql

一、mysql两张关联表批量更新一张表存在、另一张表不存在的数据

创建user和user_order表

CREATE TABLE `user` (`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`id_card` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '身份证号',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '名称',`mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '手机号',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户';CREATE TABLE `user_order` (`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户id',`id_card` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '身份证号',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '名称',`mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '手机号',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户订单';

更新sql

需求说明:订单表中用户名称、身份证号、手机号、为空,用户表中对应的三个字段都有数据,此种情况下,需要批量更新用户订单表中为空(用户表的字段不为空)的数据,用一下sql即可解决

-- 更新
UPDATE user_order o
JOIN user u ON u.id = o.user_id
SET o.id_card = u.id_card,o.name = u.name,o.mobile = u.mobile
WHEREo.id_card IS NULL AND u.id_card IS NOT NULL	AND o.name IS NULL AND u.name IS NOT NULL	AND o.mobile IS NULL AND u.mobile IS NOT NULL

二、mysql 查询数据后,插入到指定表中

事例表结构

CREATE TABLE `teacher_course` (`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`teacher_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '教师名称',`course_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '课程名称',`create_time` datetime DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='教师课程表';

查询后插入


INSERT INTO teacher_course (teacher_name,course_name)
SELECT '张三' as teacher_name,course_name
FROM teacher_course where teacher_name = '张三';

相关文章:

  • mysql 已经初始化好,但是用 dbeaver 连接报错:Public Key Retrieval is not allowed
  • 青少年编程与数学 02-019 Rust 编程基础 04课题、基本数据类型
  • 智能指针笔记
  • CST软件如何获取二极管的IV曲线
  • 边缘计算:技术概念与应用详解
  • 黑马Java基础笔记-9
  • C++23 views::chunk_by (P2443R1) 详解
  • Linux网络编程day8本地套接字
  • 【LeetCode Solutions】LeetCode 176 ~ 180 题解
  • Bearer Token的神秘面纱:深入解析HTTP认证头的设计哲学
  • rust-candle学习笔记11-实现一个简单的自注意力
  • Excel图表 vs 专业可视化工具:差距有多大?内容摘要
  • 浅蓝色调风格人像自拍Lr调色预设,手机滤镜PS+Lightroom预设下载!
  • 【Survival Analysis】【机器学习】【3】deepseek流程图
  • RDD转换算子案例
  • 【Python 字典(Dictionary)】
  • Baklib知识中台引领服务智能跃迁
  • ‌云原生CAE软件
  • Nacos源码—7.Nacos升级gRPC分析四
  • 【C/C++】范围for循环
  • 巴基斯坦称对印精准打击造成设施损坏和人员伤亡
  • 印度32座机场暂停民用航班运营,印称在边境多处发现无人机
  • 赵作海因病离世,妻子李素兰希望过平静生活
  • 马上评|比余华与史铁生的友情更动人的是什么
  • 深入贯彻中央八项规定精神学习教育中央第一指导组指导督导河北省见面会召开
  • 当年的你,现在在哪里?——新民晚报杯40周年寻人启事