首页 >数据库 >mysql教程 >如何在SQL中根据匹配的ID更新表记录?

如何在SQL中根据匹配的ID更新表记录?

Susan Sarandon
Susan Sarandon原创
2025-01-23 00:53:101029浏览

How to Update Table Records Based on Matching IDs in SQL?

根据ID匹配更新SQL表记录

引言

在数据库管理中,有时需要根据另一个表中匹配的ID来更新一个表中的数据。这在迁移数据或同步表之间信息时特别有用。

问题描述

假设我们有一个数据库,其中包含两个表,Sales_ImportRetrieveAccountNumber,每个表都包含一个名为LeadID的列。Sales_Import表有一个AccountNumber列,需要根据匹配的LeadID值使用RetrieveAccountNumber表中匹配的AccountNumber值进行更新。

失败尝试

使用以下查询尝试更新记录的初始尝试失败:

<code class="language-sql">UPDATE [Sales_Lead].[dbo].[Sales_Import]
SET    [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber
                          FROM   RetrieveAccountNumber
                          WHERE  [Sales_Lead].[dbo].[Sales_Import]. LeadID =
                                                RetrieveAccountNumber.LeadID)</code>

此查询将帐号替换为NULL值。

解决方案

此问题的解决方案在于使用UPDATE FROM语法结合联接操作。这种方法允许我们根据另一个表中的匹配值更新一个表中的记录。以下是不同数据库系统的SQL查询:

MySQL和MariaDB

<code class="language-sql">UPDATE
    Sales_Import SI,
    RetrieveAccountNumber RAN
SET
    SI.AccountNumber = RAN.AccountNumber
WHERE
    SI.LeadID = RAN.LeadID;</code>

MS SQL

<code class="language-sql">UPDATE
    Sales_Import
SET
    Sales_Import.AccountNumber = RAN.AccountNumber
FROM
    Sales_Import SI
INNER JOIN
    RetrieveAccountNumber RAN
ON
    SI.LeadID = RAN.LeadID;</code>

以上是如何在SQL中根据匹配的ID更新表记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn