iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql跨表更新怎么实现
  • 636
分享到

mysql跨表更新怎么实现

2024-04-02 19:04:59 636人浏览 独家记忆
摘要

本篇内容介绍了“Mysql跨表更新怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 背景项

本篇内容介绍了“Mysql跨表更新怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

 背景

项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为

t_dept_members, 系统中有另外一张表 t_user_info 记录了人员信息。要求将 t_dept_members 中有变化的信息更新到 t_user 表中,这个需求就是「跨表更新」啦

憨B SQL 直接被秒杀

不带脑子出门的就写出了下面的 sql

mysql跨表更新怎么实现

看到身后 DBA 小段总在修仙,想着让他帮润色一下?,于是发给了他,然后甩手回来就是这个样子:

mysql跨表更新怎么实现

看到这个 SQL 语句我都惊呆了,还能这样写,在无情的嘲笑下,一声 KO 我直接倒下。死也得死的明白,咱得查查这是咋回事啊

Mysql Update Join

我们经常使用 join 查询表中具有(在 INNER JOIN 情况下)或可能没有(在 LEFT JOIN 情况下)另一个表中匹配行的表中的行。

同样,在 mysql 中, 我们也可以在 UPDATE 语句中使用 JOIN 子句执行跨表更新,语法就是这样:

UPDATE T1, T2,  [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1  SET T1.C2 = T2.C2,      T2.C3 = expr  WHERE condition

我们还是详细的说明一下上面的语法:

  •  首先,在 UPDATE 子句之后,指定主表(T1)和希望主表联接到的表(T2)。请注意,必须在UPDATE 子句之后至少指定一个表

  •  接下来,指定你要使用的联接类型,即 INNER JOIN 或 LEFT JOIN 以及联接谓词。 JOIN子句必须出现在 UPDATE 子句之后(这个大家都是知道的哈)

  •  然后,将新值分配给要更新的 T1或 T2 表中的列

  •  最后,在 WHERE 子句中指定一个条件以将行限制为要更新的行

如果你遵循 update 语法,你会发现有另外一种语法也可以完成跨表更新

UPDATE T1, T2  SET T1.c2 = T2.c2,        T2.c3 = expr  WHERE T1.c1 = T2.c1 AND condition

上面的语法其实隐式使用了 inner join 关键字,完全等同于下面的样子:

UPDATE T1,T2  INNER JOIN T2 ON T1.C1 = T2.C1  SET T1.C2 = T2.C2,        T2.C3 = expr  WHERE condition

个人建议还是加上 inner join 关键字吧,这样可读性更好,尽享丝滑,你觉得呢?

我摸鱼看到的,觉得是灵魂翻译

谈太廉,秀你码 (Talk is cheap,show me the code)

Update Join 例子

年底了,又到了评绩效的时候了,就是那个叫 KPI 的东东(你们有吗),听说要根据 KPI 调工资了。有两张表

第一张表「employees-员工表」

mysql跨表更新怎么实现

建表语句如下:

create table employees  (      employee_id bigint auto_increment comment '员工ID,主键',      employee_name varchar(50) null comment '员工名称',      perfORMance int(4) null comment '绩效分数 1,2,3,4,5',      salary float null comment '员工薪水',      constraint employees_pk          primary key (employee_id)  )  comment '员工表';

第二张表「merits-绩效字典表」

mysql跨表更新怎么实现

建表语句如下:

create table merits  (      performance int(4) null,      percentage float null  )  comment '绩效字典表';

先生成一些模拟数据

-- 绩效字典初始化数据  INSERT INTO merits(performance, percentage)  VALUES (1, 0),         (2, 0.01),         (3, 0.03),         (4, 0.05),         (5, 0.08);  -- 员工表初始化数据  INSERT INTO employees(employee_name, performance, salary)  VALUES ('拱哥', 1, 1000),         ('小段总', 3, 20000),         ('大人', 4, 18000),         ('司令', 5, 28000),         ('老六', 2, 10000),         ('罗蒙', 3, 20000);

mysql跨表更新怎么实现

调薪规则:

原有薪资 + (原有薪资 * 当前绩效对应的调薪百分比)

按照调薪规则写 update 语句:

UPDATE employees      INNER JOIN      merits ON employees.performance = merits.performance  SET salarysalary = salary + salary * percentage;

mysql跨表更新怎么实现

拱哥绩效不好,没给涨工资......

三横一竖一咕嘎,四个小猪?来吃zha,咕嘎咕嘎又来俩

临近年底,公司又来了两位新同事, 但是公司年度绩效已经评完,所以新员工绩效为 NULL

INSERT INTO employees(employee_name, performance, salary)  VALUES ('馮大', NULL, 8000),         ('馮二', NULL, 5000);

新员工工作干的不错,也要 1.5% 涨点工资的。如果我们还是用 UPDATE INNER JOIN,按照上面的更新语句是不可能完成的,因为条件等式不成立,这是我们就要用到 UPDATE LEFT JOIN 了

UPDATE employees      LEFT JOIN      merits ON employees.performance = merits.performance  SET salarysalary = salary + salary * 0.015  WHERE merits.percentage IS NULL;

mysql跨表更新怎么实现

“mysql跨表更新怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: mysql跨表更新怎么实现

本文链接: https://www.lsjlt.com/news/71217.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql跨表更新怎么实现
    本篇内容介绍了“mysql跨表更新怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 背景项...
    99+
    2022-10-19
  • MySQL跨表查询与跨表更新
    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, 系...
    99+
    2022-10-18
  • MySQL中怎么实现跨表更新与数据并合
    本篇文章为大家展示了MySQL中怎么实现跨表更新与数据并合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  MySQL数据库如何实现跨表更新与数据并合  例子是这样...
    99+
    2022-10-18
  • php怎么实现mysql更新
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php怎么实现mysql更新?PHP MySQL UpdateUPDATE 语句用于中修改数据库表中的数据。更新数据库中的数据UPDATE 语句用于更新数据库表中已存在...
    99+
    2021-01-28
    php mysql
  • 怎么在Mysql中利用update实现多表联合更新
    今天就跟大家聊聊有关怎么在Mysql中利用update实现多表联合更新,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 执行 UPDATE stu...
    99+
    2022-10-18
  • mysql列表更新失败怎么办
    mysql列表更新失败的原因:可能是mysql事务没有提交,出现了锁表,导致更新失败解决方法:将出现锁表的事务kill掉即可例:更新表中的某个字段出现失败mysql> set innodb_lock_wait_timeout=100mysq...
    99+
    2022-10-05
  • Mysql中怎么实现Update批量更新
    Mysql中怎么实现Update批量更新,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通常情况下,我们会使用以下SQL语句来更新字段值:UPD...
    99+
    2022-10-18
  • sqlite中怎么实现联合多表更新
    本篇文章为大家展示了sqlite中怎么实现联合多表更新,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。update table1 set...
    99+
    2022-10-18
  • SQL update中怎么实现多表关联更新
    这篇文章给大家介绍SQL update中怎么实现多表关联更新,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。有A、B张表,其记录如下:A表c1 c2--------------...
    99+
    2022-10-18
  • mysql实现多表关联更新的详细方法
    不知道大家之前对类似mysql实现多表关联更新的详细方法的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完mysql实现多表关联更新的详细方法你一定会有所收获的。&n...
    99+
    2022-10-18
  • MySQL实现批量更新不同表中的数据
    目录批量更新不同表的数据下面为当时所编写的存储过程本代码涉及到的MySQL的内容为批量更新语句(UPDATE)使用UPDATE语句实现批量修改创建数据库‘bhl_...
    99+
    2022-11-13
  • MYSQL实现将B表中的字段值到更新A表中
    根据A表中的id字段和B表中的id字段,将B表中name字段和price字段值更新到A表中name字段和price字段 UPDATE A, BSET A.name = B.name, A.price = B.price...
    99+
    2014-07-29
    MYSQL实现将B表中的字段值到更新A表中
  • php如何实现mysql更新
    这篇文章给大家分享的是有关php如何实现mysql更新的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php实现mysql更新的方法:1、创建一个PHP示例文件;2、连接mysql;3、通过“mysqli_quer...
    99+
    2023-06-22
  • docker热更新怎么实现
    Docker 热更新可以通过以下几种方式来实现: 使用 Docker Compose:可以使用 Docker Compose 来...
    99+
    2023-10-27
    docker
  • react 怎么实现热更新
    本教程操作环境:Windows10系统、react18版、Dell G3电脑。react 怎么实现热更新?[React] create-react-app 实现热更新一、使用以下命令行下载 react-hot-loaderyarn add ...
    99+
    2023-05-14
    React
  • nacos怎么实现热更新
    要实现 Nacos 的热更新,可以按照以下步骤操作:1. 在 Nacos 控制台上创建一个配置。2. 在应用程序中引入 Nacos ...
    99+
    2023-08-26
    nacos
  • mysql怎么更新数据
    今天就跟大家聊聊有关mysql怎么更新数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。mysql怎么更新数据使用MySQL-UPDATE语法更新数...
    99+
    2022-10-18
  • mysql怎么更新注释
    这篇文章主要介绍了mysql怎么更新注释,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql更新注释的方法:执行【ALTER TABLE `...
    99+
    2022-10-18
  • SQL 中怎么利用Update实现多表联合更新
    这篇文章将为大家详细讲解有关SQL 中怎么利用Update实现多表联合更新,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。(1) sqlite 多表...
    99+
    2022-10-18
  • MySQL怎么创建多个表的更新与删除
    本篇内容主要讲解“MySQL怎么创建多个表的更新与删除”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL怎么创建多个表的更新与删除”吧!1.涉及多个表的更...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作