干货 | 一条语句更新多个表

news2024/10/6 2:22:35

众所周知,多个服务器命中会减慢应用程序的速度。出于这个原因,开发人员致力于找尋使用最少的语句更新数据的最有效方法。事实证明,SQL UPDATE 语句确实支持使用以下语法设置多个表的字段:

UPDATE table1, table2, ...
    SET column1 = value1,
        column2 = value2,
        ...
[WHERE conditions]

语法是由组合两个或多个表的各种关键字组成,例如 join 关键字。

今天的文章将概述多表 UPDATE 语句,以及使用 MySQL 8 和 Navicat Premium 16 作为示例。

注意事项

将两个表更新合并为一条语句并非没有限制和准则。请记住以下几点:

  • 在多表 UPDATE 查询中,每条满足条件的记录都会被更新。即使记录多次匹配条件,该行也只会更新一次。
  • 更新多个表的语法不能与 ORDER BY 和LIMIT 关键字一起使用。

因此,虽然多表 UPDATE 语句非常有效,但它并不适用于所有情况。

实际例子

为了尝试使用多表 UPDATE 语句,我们将创建两个名为“library”和“book”的表,并设想一下从图书馆借了一本或多本书。这样做会同时增加和减少图书的数量。事实证明,这是将两个单独的语句合并为一个 UPDATE 查询的理想方案。这可以避免对服务器的单独调用,令操作更有效率。

以下是每个表的定义和内容:

library 表

book 表

以下的查询将更新两个表:

UPDATE library l, book b
    SET l.book_count = l.book_count - 2,
        b.book_count = b.book_count + 2
WHERE l.id = b.book_id
AND b.id = '1AG';

在上面的查询中,l.id = b.book_id 条件充当一个内部联接,将两个表结合在一起,并在检查表约束后对组合表进行操作。同时,b.id = '1AG' 条件进一步将目标行减少为与用户 '1AG' 相关的行。

我们也可以使用其他联接类型,如外部联接和右外联接;唯一的弱点是分组的两个表必须具有相似或匹配的属性。

与常规(单个表)UPDATE 语句一样,SET 关键字与 UPDATE 关键字会一起用于在现有行中设置新值。旧值会被新数据覆盖。我们可以在下面的 Navicat 中查看查询结果:

正如预期的那样,用户 '1AG' 和图书 103 的计数已在两个表中更新:

总结

今天的文章概述了多表 UPDATE 语句,以及使用 MySQL 8 和 Navicat Premium 16 作为示例。我们学习到多表 UPDATE 语句最适合对相关表列应用数学运算,例如递增和递减。

往期回顾

1. 盗版引发设备瘫痪 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件

2. Navicat 荣获 Microsoft 金牌合作伙伴

3. Navicat 16.3 正式支持 OceanBase 企业版

4. 免费试用 Navicat 16

5. Navicat 发展史

6. SQL 语句中 WHERE 1=1 的作用

7. 在 SQL 中计算总行数的百分比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022-11-14 西安 activiti工作流(01)

语言确实有其局限性,但我相信:一件值得做的事情即使做的不怎么样也是值得的! 概念 1.流程审批以前的实现方式 在没有专门的工作流引擎之前,为了实现流程控制,通常的做法就是采用状态字段的值来跟踪流程的变化情况。通过状态字段的取值来决定…

【数据结构】二叉树优先级队列——堆

文章目录1. 树的概念及结构1.1 树的相关概念1.2 树的表示2. 二叉树的概念及其结构2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构3. 堆3.1 堆的概念及结构3.2 堆的实现3.2.1 堆的创建3.2.2 堆的插入3.2.3 堆的向上调整算法3.2.4 堆的删除3.2.5 堆的向下…

javaSE--数据类型(复习)

一、变量和类型 变量 指的是 程序运行时 的 可变的量,相当于开辟一块内存空间来保存一些数据 类型 则是 对 变量的种类 进行了 划分,不同的类型 的 变量 具有不同特性 我们所讨论的"变量"主要 和 我们的"内存"这样的硬件设备密切相关…

value_counts()与count()的简单介绍

文章目录一,value_counts()(一)用法(二)参数介绍二,count()一,value_counts() (一)用法 value_counts()是针对某一列的数据中存在不同的值进行汇总计算 举例 data[dis…

昨天阅读量900

昨天周五了,阅读量还不错的,超过平均值700的,一看有900多呢

80211 TIM流量指示图 附C语言实现

TIM是什么? TIM:Traffic Indication Map,流量指示图。 在80211协议节能模式中,AP会缓存下行数据,AP就是通过beacon帧中TIM来告知休眠中的STA有数据需要接收。 DTIM:Delivery Traffic Indication Map&#…

css引入其它字体

1、下载需要的字体,放到下图的文件夹中。 2、把下载的字体文件放到项目的font目录下 3、在css中加入下面的代码 font-face {font-family: "思源黑体";src: url("../font/SourceHanSansCN-Normal.ttf"); } * { font-family: "思源黑体&quo…

【计算机网络】Cookie、Session和上传文件重点知识汇总

目录 1.Cookie基础知识: 2.Session基础知识: 3.相关API: 3.1.HttpServletRequest类: 3.2.HttpServletResponse类: 3.3.HttpSession类: 3.4.Cookie类: 3.5.模拟实现登录页面 4.上传文件…

伸展树原理介绍

一 点睛 伸展树,也叫作分裂树,是一种二叉搜索树,可以在 O (logn ) 内完成插入、查找和删除操作。在任意数据结构的生命周期内执行不同操作的概率往往极不均衡,而且各操作之间有极强的相关性,在整体上多呈现极强的规律…

【LeetCode】882. 细分图中的可到达节点

题目描述 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edges 表示,其中 edges[i] [ui…

ESG,TO B长期主义里的「新战役」

中国企业最好的方式是从初始阶段就植入ESG基因,使它逐渐从隐形变成显性基因。长期坚持此类发展导向,对后续发展ESG战略,提升ESG合规能力也将成为一种积累和准备。 作者|三七 编辑|皮爷 出品|产业家 20世纪初期,伦敦得到一个延…

MyBaits-Plus中@TableField和@TableId用法

目录 前言 一、TableField(value "表字段") 二、TableField(select false) 三、TableField(exist false) 四、TableId(type IdType.AUTO)补充 总结 前言 接着前两篇mybatis-plus的知识点 Mybatis-Plus知识点[MyBatisMyBatis-Plus的基础运用]_心态还需努力呀…

论文阅读: Disentangled lmage Colorization via Global Anchors

Disentangled lmage Colorization via Global Anchors发表于SIGGRAPH ASIA 2022,是一篇基于深度学习的图像彩色化的工作,简单介绍一下。之前曾分享过一篇彩色化的经典论文:经典论文回顾: Colorization using Optimization。 作者认为图像彩色…

【数据库】索引

MySQL索引 1、B树索引 是InnoDB引擎默认的索引 B树结构 B树是平衡树,即所有叶子节点都在同一层的多叉树 每个节点中key和指针交替排列,两个key之间的指针指向的是大于等于左边key且小于等于右边key的节点 叶子节点顺次连接,所以沿着B树的叶…

ADAU1860调试心得(5)ADC-DAC直通程序

硬件、驱动全部都搞好了,我觉得调试记录的话,就从最简单的开始,先做一个直通的例程。先把这个板子弄出声来,会用sigmastudio,会做ADAU开发的兄弟们应该很熟悉,同样的配方,同样的味道&#xff0c…

Nginx--单向链表分析

1.基本数据结构 1.1结点 struct ngx_list_part_s {void *elts;ngx_uint_t nelts;ngx_list_part_t *next; };结构成员分析 void* elts :数组元素指针 ngx_uint_t :数组里面的元素数量 ngx_list_part_t*…

英文Assignment写作引用格式怎么分析?

英文Assignment写作中我们常常使用不同作家和研究员的观点,论证来支持自己的想法。引用他们原文的时候我们必须使用具体引用格式。不同学校对引用格式都有不同的要求。事实上,有很多不同的引用格式,大约有超过200种引用格式。例如我们耳熟能详…

一文读懂!异常检测全攻略!从统计方法到机器学习

💡 作者:韩信子ShowMeAI 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41 📘 本文地址:https://showmea…

Day12--优化分类页面的效果

1.提出一个问题,当你点击一级分类的时候,在三级分类中滚动自己的进度条。切换到之后的另一级分类再看看其三级分类时不是再最顶部。 我的操作: 1》在cate.vue中: *************************************************************…

大数据必看:大厂十年架构师职业生涯实战经验总结,《大规模分布式系统架构与设计实战》

前言 这段时间一直在读一本书《大规模分布式系统架构与设计实战》,这是淘宝千峰老师的作品,是从程序员到首席架构师十多年职业生涯的实战经验总结。 这本书其实是围绕着Fourinone在讲分布式,并非分布式理论,所以只适用于想研究F…