在sql表中查找重复对,并更新每个重复对中1个的值
我有一张有1800个条目的表格。900个条目与其他900个条目在多个字段(例如contactFirstName和contactLastName)中的值重复,但每个重复条目对中的一个包含另一个不包含的数据(例如PhoneNumber)。包含附加数据(即:phoneNumber)的副本的状态ID为10,不包含phoneNumber数据的副本的状态ID为2。 如何通过contactFirstName和ContactLastName查找重复对,然后对于每对,请记住,有900对将statusID=2的副本中的电话号码数据复制到statusID=10的副本中的phoneNumber字段中,但前提是目标字段值为“NULL” 我希望我的解释清楚。我将非常感谢您的帮助。例如:在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的副本
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的记录中,我的重点是解决方案的描述,它说的正好相反。