仅当记录匹配时才从另一个表中更新记录
Posted
技术标签:
【中文标题】仅当记录匹配时才从另一个表中更新记录【英文标题】:Update records in one table from another only if records match 【发布时间】:2019-08-21 18:10:56 【问题描述】:我希望使用 Patientdemographics2 中名为 custom 的列更新 Patientdemographs 中名为 custom 的列,但前提是两个表中的 FirstName LastName 和 DateofBirth 列匹配。
Update PatientDemographics
Set PatientDemographics.custom = PatientDemographics2.custom
FROM PatientDemographics INNER JOIN
PatientDemographics2 ON
Patientdemographics.FirstName = Patientdemographics2.FirstName and
Patientdemographics.LastName = Patientdemographics2.LastName and
Patientdemographics.DateofBirth = Patientdemographics.DateofBirth
where Patientdemographics.FirstName = Patientdemographics2.FirstName and
Patientdemographics.LastName = Patientdemographics2.LastName and
Patientdemographics.DateofBirth = Patientdemographics.DateofBirth
【问题讨论】:
SQL 服务器 2014 如果您使用具有如此长的表名容易出现印刷错误的表别名,您可以省去很多麻烦。 【参考方案1】:ON
子句的最后一个条件有错字:
Patientdemographics.DateofBirth = Patientdemographics.DateofBirth
应该是:
Patientdemographics.DateofBirth = Patientdemographics2.DateofBirth
而且您还有一个无用 WHERE
子句,因为它的所有条件都已应用于ON
子句。
还可以使用别名让代码更简单、更易读:
Update p
Set p.custom = p2.custom
FROM PatientDemographics AS p INNER JOIN PatientDemographics2 AS p2
ON
p.FirstName = p2.FirstName and
p.LastName = p2.LastName and
p.DateofBirth = p2.DateofBirth
【讨论】:
以上是关于仅当记录匹配时才从另一个表中更新记录的主要内容,如果未能解决你的问题,请参考以下文章