MySQL跨表查询与跨表更新


有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊?背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为t_dept_members, 系统中有另外一张表 t_user_info 记录了人员信息。要求将 t_dept_members 中有变化的信息更新到 t_user 表中,这个需求就是「跨表更新」啦憨B SQL 直接被秒杀 不带脑子出门的就写出了下面的 SQL看到身后 DBA 小段总在修仙,想着让他帮润色一下,于是发给了他,然后甩手回来就是这个样子:看到这个 SQL 语句我都惊呆了,还能这样写,在无情的嘲笑下,一声 KO 我直接倒下。开发云主机域名死也得死的明白,咱得查查这是咋回事啊Mysql Update Join 我们经常使用 join 查询表中具有(在 INNER JOIN 情况下)或可能没有(在 LEFT JOIN 情况下)另一个表中匹配行的表中的行。同样,在 MySQL 中, 我们也可以在 UPDATE 语句中使用 JOIN 子句执行跨表更新,语法就是这样:我们还是详细的说明一下上面的语法:首先,在 UPDATE 子句之后,指定主表(T1)和希望主表联接到的表(T2)。请注意,必须在UPDATE 子句之后至少指定一个表接下来,指定你要使用的联接类型,即 INNER JOIN 或 LEFT JOIN 以及联接谓词。 JOIN子句必须出现在 UPDATE 子句之后(这个大家都是知道的哈)然后,将新值分配给要更新的 T1或 T2 表中的列最后,在 WHERE 子句中指定一个条件以将行限制为要更新的行如果你遵循 update 语法,你会发现有另外一种语法也可以完成跨表更新上面的语法其实隐式使用了 inner join 关键字,完全等同于下面的样子:个人建议还是加上 inner join 关键字吧,这样可读性更好,尽享丝滑,你觉得呢?谈太廉,秀你码 (Talk is cheap,show me the code)Update Join 例子年底了,又到了评绩效的时候了,就是那个叫 KPI 的东东(你们有吗),听说要根据 KPI 调工资了。有两张表第一张表「employees-员工表」建表语句如下:第二张表「merits-绩效字典表」建表语句如下:先生成一些模拟数据原有薪资 + (原有薪资 * 当前绩效对应的调薪百分比)按照调薪规则写 update 语句:拱哥绩效不好,没给涨工资……临近年底,公司又来了两位新同事, 但是公司年度绩效已经评完,所以新员工绩效为 NULL新员工工作干的不错,也要 1.5% 涨点工资的。如果我们还是用 UPDATE INNER JOIN,按照上面的更新语句是不可能完成的,因为条件等式不成立,这是我们就要用到 UPDATE LEFT JOIN 了到这里,新员工的涨薪工作也做完,拱哥由于知识点了解不透彻,灰溜溜的回家过年

相关推荐: MySQL进行权限管理的方法

这篇文章主要介绍了MySQL进行权限管理的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。MySQL 的权限表在数据库启动的时候就载入内存,当用户通过身份认证后,就在内存中进行相应权限的存取,这样…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/10 09:51
下一篇 06/10 09:52

相关推荐