MySQL 和 SQL Server 中的连表更新 UPDATE JOIN 写法比较

MySQL 和 SQL Server 中的连表更新 UPDATE JOIN 写法比较

  • 一、前言
    • [1. MySQL 写法](#1. MySQL 写法)
      • [1.1 解释](#1.1 解释)
    • [2. SQL Server 写法](#2. SQL Server 写法)
      • [2.1 解释](#2.1 解释)
  • 二、总结

一、前言

在关系型数据库管理系统(RDBMS)中,使用 UPDATE 语句进行表格更新是非常常见的操作。特别是当需要根据另一个表格的数据来更新目标表格时,使用 JOIN 是一种有效的方法。本文将比较 MySQL 和 SQL Server 中使用 UPDATE JOIN 的写法,并详细说明它们的语法和用法。

1. MySQL 写法

MySQL 使用 UPDATE ... JOIN ... SET ... 语法来实现表格联接更新。以下是一个示例:

sql 复制代码
UPDATE ladder_control t1
JOIN hga_mpwh t2 ON t1.fjh = t2.mpbm
SET t1.room_number = t2.id
WHERE t1.room_number IS NULL;

1.1 解释

  • ladder_controlhga_mpwh 是两个表格。
  • UPDATE ladder_control t1 指定要更新的目标表格,并用 t1 作为别名。
  • JOIN hga_mpwh t2 ON t1.fjh = t2.mpbm 使用 INNER JOIN 将 ladder_control 表格和 hga_mpwh 表格联接,条件是 t1.fjh = t2.mpbm
  • SET t1.room_number = t2.id 指定了更新操作,将 ladder_control 表格中的 room_number 列更新为 hga_mpwh 表格中对应的 id 列。
  • WHERE t1.room_number IS NULL 是一个过滤条件,仅当 ladder_control 表格中的 room_number 为空时才执行更新操作。

2. SQL Server 写法

SQL Server 使用 UPDATE ... FROM ... SET ... WHERE ... 语法来实现表格联接更新。以下是相应的示例:

sql 复制代码
UPDATE t1
SET t1.room_number = t2.id
FROM ladder_control t1
JOIN hga_mpwh t2 ON t1.fjh = t2.mpbm
WHERE t1.room_number IS NULL;

2.1 解释

  • ladder_controlhga_mpwh 同样是两个表格。
  • UPDATE t1 指定要更新的目标表格 t1,这里不需要使用别名。
  • FROM ladder_control t1 JOIN hga_mpwh t2 ON t1.fjh = t2.mpbm 使用 INNER JOIN 将 ladder_control 表格和 hga_mpwh 表格联接,条件是 t1.fjh = t2.mpbm
  • SET t1.room_number = t2.id 指定了更新操作,将 ladder_control 表格中的 room_number 列更新为 hga_mpwh 表格中对应的 id 列。
  • WHERE t1.room_number IS NULL 是一个过滤条件,仅当 ladder_control 表格中的 room_number 为空时才执行更新操作。

二、总结

无论是在 MySQL 还是 SQL Server 中,通过使用 JOIN 可以有效地根据另一个表格的数据更新目标表格的内容。虽然两者的语法有细微差别,但基本的操作逻辑和语义是相似的。熟悉这些语法和用法将帮助你更加灵活地操作数据库,并有效地处理数据更新任务。

希望本文能够帮助你理解 MySQL 和 SQL Server 中 UPDATE JOIN 的写法和用法!

相关推荐
IvorySQL6 分钟前
IvorySQL HTAP 实时湖仓接入引擎
数据库·postgresql·开源·htap·ivorysql
忧郁的紫菜10 分钟前
WCF+JSON+实体对象与WebService+DataSet效率大比拼
数据库·oracle·json
IvorySQL39 分钟前
PostgreSQL 技术日报|2026-07-05
数据库·postgresql
万亿少女的梦1681 小时前
基于SpringBoot的考研学习交流系统设计与开发
spring boot·mysql·vue·系统设计·论坛系统
我会尽全力 乐观而坚强2 小时前
MySQL库与表的操作
linux·数据库·mysql
lilihuigz2 小时前
产品附加选项插件WooCommerce Product Add-Ons:9种字段类型与3种定价模式提升销售 - 易服客工作室
数据库·mysql·wordpress插件·woocommerce扩展·定制选项
360智汇云3 小时前
Valkey 9.1上线:从Redis兼容到AI数据能力探索
数据库
标致的自行车3 小时前
Entity Framework之问题收集
jvm·数据库·oracle
啵啵鱼爱吃小猫咪3 小时前
Franka机械臂安装实时内核
数据库·postgresql
今天也是元气满满的一天呢4 小时前
从单机架构到负载均衡的互联网架构全流程
数据库·系统架构