SQL SERVER UPDATE JOIN17 Mar 2025 | 5 分钟阅读 本文的主要目的是向您展示如何使用 UPDATE JOIN 命令,通过在两个表之间使用 JOIN 来编辑表中现有的记录。 我们可以单独或一起使用 UPDATE 语句和 JOIN 语句。 UPDATE 查询是用于修改表中现有数据的 DML 语句。 我们必须在 UPDATE 查询中使用 SET 和 WHERE 子句。 SET 子句用于更改 WHERE 子句中指定的列的值。 JOIN 子句用于通过在一个查询中连接多个表来获取数据。 什么是 UPDATE JOIN?UPDATE JOIN 是 UPDATE 查询的一种特殊情况,其中目标表中的行使用来自源表中相同列或字段的值进行更新。 换句话说,此语句执行跨表更新,这意味着我们可以使用 JOIN 子句条件使用另一个表来更新一个表。 当多个表在 PRIMARY 和 FOREIGN 键的帮助下以及连接条件的情况下连接时,它可以更新和更改数据。 我们可以使用 UPDATE 查询一次更新一个或多个列。 语法UPDATE JOIN 语句的语法如下所示 上面语法参数的解释如下: 首先,我们必须指定用于修改的表名(Tab1 和 Tab2)。 我们必须在 UPDATE 子句后至少指定一个表。 之后,我们必须为已更改表的每一列分配新值。 然后,在 FROM 子句中,我们指定要进行更新的源表。 接下来,我们需要编写连接类型,要么是 INNER,要么是 LEFT JOIN,然后在 ON 关键字后写连接条件。 最后,可选的 WHERE 子句用于限制更新的行。 UPDATE JOIN 示例让我们首先创建以下表,以在进入如何使用 UPDATE 语句进行连接之前,执行单个语句。 以下示例代码将创建两个名为 Merit 和 Employee 的表,这两个表通过外键相关联。 在这里,“Merits”是父表,“Employee”是子表。 “Merit”表的代码脚本 “Employee”表的代码脚本 我们可以通过使用 SELECT 语句来验证表,如下所示 执行上述语句将返回以下输出 ![]() 使用 INNER JOIN 进行更新如果我们想根据员工的表现来更新他们的工资,我们需要使用 UPDATE INNER JOIN 语句。 此语句将根据 Merits 表中包含的表现百分比 (%) 来更新 Employee 表中员工的工资。 我们必须使用通用字段 performance 来连接 Employees 和 Merits 表。 考虑以下查询来完成此任务 执行该语句将显示以下消息 ![]() 如果我们再次查询 Employee 表,我们将看到工资列中的值已成功更新 ![]() 让我们看看 SQL Server 如何处理此查询。 在查询中,我们只在 UPDATE 子句后提到了 Employee 表,因为我们只想编辑 Employee 表中的记录,而不是两者。 此查询将“Employee”表的 performance 列的值与“Merits”表的 performance 列的值进行比较。 如果找到匹配的 performance 字段,则使用 Merits 表的百分比来更新 Employees 表的 salary 列。 此查询将更新 Employees 表的每条记录,因为我们没有在 UPDATE JOIN 语句中指定 WHERE 子句。 使用 LEFT JOIN 进行更新在前面的示例中,我们使用了 inner join 来更新员工的工资,其中 Merits 表和 Employee 表中都存在相似的 performance 列。 现在,我们将看到如何将 UPDATE 语句与 LEFT JOIN 一起使用。 为了更好地理解这个概念,我们首先需要在 Employees 表中添加两行额外的行 由于这些员工的表现记录不可用,因为他们是新聘用的。 看看以下输出 ![]() 假设我们想更新新聘用员工的工资。 在这种情况下,不能使用 UPDATE INNER JOIN 查询。 这是因为他们的 Merits 表中没有可用表现数据。 因此,我们将使用 UPDATE LEFT JOIN 语句来满足此需求。 当在其他表的相应行中找不到匹配记录时,UPDATE LEFT JOIN 语句会更新表中的一行。 例如,如果我们想将最近聘用的员工的薪酬增加 4.5%,我们可以使用以下语句来完成此任务 执行该语句将返回以下结果,表明新聘用员工的工资已成功更新。 ![]() 本文将帮助我们了解 UPDATE JOIN 语句,使我们能够使用 JOIN 子句条件用另一个表中的新数据替换一个表中现有的数据。 当我们需要在 WHERE 子句中更改某些列以及 INNER JOIN 或 LEFT JOIN 子句时,此查询很有用。 我们应该小心更新生产实例中的关系表,因为错误的值、列名或其他错误可能会导致问题。 下一主题SQL Server 注释 |
我们请求您订阅我们的新闻通讯以获取最新更新。