引言
在数据库管理中,有时需要根据另一个表中匹配的ID来更新一个表中的数据。这在迁移数据或同步表之间信息时特别有用。
问题描述
假设我们有一个数据库,其中包含两个表,Sales_Import
和RetrieveAccountNumber
,每个表都包含一个名为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中文网其他相关文章!