在sql表中查找重复对,并更新每个重复对中1个的值

在sql表中查找重复对,并更新每个重复对中1个的值,sql,sql-server,database,Sql,Sql Server,Database,我有一张有1800个条目的表格。900个条目与其他900个条目在多个字段(例如contactFirstName和contactLastName)中的值重复,但每个重复条目对中的一个包含另一个不包含的数据(例如PhoneNumber)。包含附加数据(即:phoneNumber)的副本的状态ID为10,不包含phoneNumber数据的副本的状态ID为2。 如何通过contactFirstName和ContactLastName查找重复对,然后对于每对,请记住,有900对将statusID=2的副本

我有一张有1800个条目的表格。900个条目与其他900个条目在多个字段(例如contactFirstName和contactLastName)中的值重复,但每个重复条目对中的一个包含另一个不包含的数据(例如PhoneNumber)。包含附加数据(即:phoneNumber)的副本的状态ID为10,不包含phoneNumber数据的副本的状态ID为2。 如何通过contactFirstName和ContactLastName查找重复对,然后对于每对,请记住,有900对将statusID=2的副本中的电话号码数据复制到statusID=10的副本中的phoneNumber字段中,但前提是目标字段值为“NULL”

我希望我的解释清楚。我将非常感谢您的帮助。

例如:

UPDATE table
SET PhoneNumber = (SELECT t2.PhoneNumber
                   FROM table t2
                   WHERE t2.StatusID = 2
                   AND t2.contactFirstName = table.contactFirstName
                   AND t2.ContactLastName = table.ContactLastName)
WHERE PhoneNumber IS NULL
AND StatusID = 10;

将表与其自身联接,并更新状态id为10的表

SQL Server语法示例:

update
  a
set
  phoneNumber = b.phoneNumber
from
  TheTable a
  inner join TheTable b on b.contactFirstName = a.contactFirstName and b.contactLastName = a.contactLastName and b.statusID = 2
where
  a.statusID = 10 and a.phoneNumber is null

您使用的是哪种数据库管理系统?博士后?甲骨文?嗨,Guffa,太棒了-这是一个救生员-谢谢。最后一行应该是;'其中a.statusID=2,a.phoneNumber为null’。再次感谢。@Mios:好的,我看到在数据描述中说电话号码在状态id为10的记录中,我的重点是解决方案的描述,它说的正好相反。