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

时间:2014-08-12 22:53:02

标签: sql sql-server database

我有一张包含1800个条目的表格。 900个条目是多个字段中的值的其他900个条目的副本,例如contactFirstName和contactLastName,但是每个副本对中的一个包含另一个不包含的数据,例如PhoneNumber。包含附加数据的重复项,即:phoneNumber,具有statusID = 10,没有phoneNumber数据的重复项具有statusID = 2。 如何通过contactFirstName和ContactLastName找到重复对,然后为每对(请记住 - 有900对)将statusID = 2的副本中的phoneNumber数据复制到statusID = 10的副本中的phoneNumber字段中(但仅限于目标字段值为“NULL”)。

我希望我的解释清楚。我会非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

类似的东西:

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;

答案 1 :(得分:0)

自己加入表格,并更新状态为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