迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

在 MySQL 中使用一个查询更新多个表

作者:迹忆客 最近更新:2023/03/13 浏览次数:

在某些情况下,用户想要同时更新逻辑相关的表。这些逻辑相关的表通过一些属性相互链接。

MySQL 一次查询更新多张表的优点

表中的类似属性用于创建更新查询。更新查询根据条件在不同的表中执行多行更新。

当出现类似情况时,适合多个表更新查询。使用这种多表更新查询的好处是:

在 MySQL 中使用 UPDATE 关键字通过一个查询更新多个表

在多表更新查询中,每条满足条件的记录都会被更新。即使条件匹配多次,该行也只会更新一次。

更新多个表的语法不能与 ORDER BYLIMIT 关键字一起使用。

UPDATE 关键字的语法:

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

多重更新不是 MySQL 语言中存在的组合关键字。语法是由有助于对两个或多个表进行分组的各种关键字的组合形成的,例如 join 关键字。

连接类型用于进行单个查询以一次更新多个表。让我们通过一次更新多个表来理解这一点。

考虑两个名为 librarystu_book 的表。并考虑一本书从图书馆发给学生的情况。

图书馆的图书数量减少了,而有学生的图书数量增加了。这就是需要两个单独调用的场景。

为了避免 RDBMS 表中的单独更新,我们使用单个查询更新两个表中的行。以下是更新调用之前要执行的语句列表。

在对表进行实际查询之前的查询列表:

查询执行 MySQL 语句:

UPDATE library l, stu_book s
    SET l.book_count = l.book_count - 2,
        s.book_count = s.book_count + 2
WHERE l.id = s.book_id;

在上面的查询中,在内部,inner join 合并了两个表,并在检查表的约束后对合并的表进行操作。当没有指定关键字时,将应用内部联接。

像外连接这样的连接,右外连接,用户应该使用正确的关键字。只有在分组的两个表具有相似/匹配属性的情况下才能执行联接。

SET 关键字与 UPDATE 关键字一起用于在现有行中设置新值。它通过在旧值上写入新数据来覆盖旧值。

这里 set 更新了 stu_book 表的书籍数量,并且相同数量的数量从 library 书籍数量中减少。

两个表的所有行的计数都不会更新。相反,限制由 WHERE 关键字保留。

WHERE 关键字对行进行实际过滤。关键字在检查表中的条件后过滤行。

在这里,这个关键字表示 library_id 应该与 stu_book 表的 book_id 匹配。

输出将列出两个表中受影响的总行数的结果。下面是确认受影响的行数的输出。

Query OK, 2 rows affected (0.02 sec)
Rows matched: 2  Changed: 2  Warnings: 0

以下是上述查询在本地运行环境或命令提示符下的最终输出。

本地运行截图:

触发更新后的输出

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便