MySQL跨表查询与跨表更新

  

有点SQL基础的朋友肯定听过“跨表查询”,那啥是跨表更新啊?

  

<强>背景

  

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

  

<代码> t_dept_members> t_user_info> t_dept_members> t_user 表中,这个需求就是“跨表更新”啦

  

<强>憨B SQL直接被秒杀

  

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

  

 MySQL跨表查询与跨表更新

  

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

  

 MySQL跨表查询与跨表更新

  

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

  

<强> Mysql更新加入

  

我们经常使用<代码>与查询表中具有(在<代码>内连接> 左加入情况下)另一个表中匹配行的表中的行。

  在MySQL中,

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

        更新T1, T2,   (内部连接|左连接)T1>   更新T1, T2   组T1。c2=T2.c2,   T2。c3=expr   在T1。c1=T2。c1和条件   之前      

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

        更新T1, T2   内连接T2 alt=" MySQL跨表查询与跨表更新">

  

建表语句如下:

        创建表的员工   (   employee_id bigint auto_increment评论的员工ID,主键的,   employee_name varchar(50)零评论的员工名称”,   性能int(4)零评论“绩效分数1,2,3,4,5 ',   工资浮空评论的员工薪水”,   约束employees_pk   主键(employee_id)   )   评论的员工表';   之前      

第二张表“优点——绩效字典表”

  

 MySQL跨表查询与跨表更新

  

建表语句如下:

        创建表的优点   (   性能int(4)空,   百分比浮空   )   评论“绩效字典表';   之前      

先生成一些模拟数据

        ——绩效字典初始化数据   插入的优点(性能、百分比)   值(1,0),   0.01 (2),   (0.03),   0.05 (4),   (0.08);         ——员工表初始化数据   插入员工(employee_name、性能、工资)   值(“拱哥”,1000),   (“小段总”,20000),   (“大”人,4,18000),   (“司令’,5,28000),   (“老六”,2,10000),   (“罗蒙”,20000);   之前      

 MySQL跨表查询与跨表更新

  
调薪规则:   

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

     

按照调薪规则写更新语句:

        更新员工   内连接   优点alt=" MySQL跨表查询与跨表更新">

  

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

  
三横一竖一咕嘎,四个小猪& # 128055;来吃咋,咕嘎咕嘎又来俩   

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

        插入员工(employee_name、性能、工资)   值(“馮大’,NULL, 8000),   (“馮二”,零,5000);   之前      

新员工工作干的不错,也要<代码> 1.5%涨点工资的。如果我们还是用<代码>更新内连接> 更新了加入

        更新员工   左连接   优点alt=" MySQL跨表查询与跨表更新">

  

到这里,新员工的涨薪工作也做完,拱哥由于知识点了解不透彻,灰溜溜的回家过年

MySQL跨表查询与跨表更新