SQL Server:按比ContactID更大的顺序删除重复记录
我一直在使用以下查询,以帮助我列出并查找表中的重复项SQL Server:按比ContactID更大的顺序删除重复记录,sql,sql-server,tsql,duplicates,Sql,Sql Server,Tsql,Duplicates,我一直在使用以下查询,以帮助我列出并查找表中的重复项 SELECT TOP 100 a.ContactID, a.[Company Name], a.PhoneNumber, a.Status, a.State FROM Contacts a JOIN (SELECT PhoneNumber, Status, COUNT(PhoneNumber) AS totals FROM Contacts GROUP BY PhoneNumber, Sta
SELECT TOP 100
a.ContactID, a.[Company Name], a.PhoneNumber, a.Status, a.State
FROM
Contacts a
JOIN
(SELECT PhoneNumber, Status, COUNT(PhoneNumber) AS totals
FROM Contacts
GROUP BY PhoneNumber, Status
HAVING COUNT(PhoneNumber) > 1) b ON a.PhoneNumber = b.PhoneNumber
AND a.Status = 'New'
AND a.Status = b.Status
ORDER BY
a.PhoneNumber ASC
这将返回我在下面搜索的内容:
1365640108 MOBILTIY SHOP 2242057949 New IL
1365647384 MOBILITY SHOP 2242057949 New IL
1365640142 LIFE POINT CHILD FAMILY 2242085228 New IL
1365647390 PROGAR MICHELLE 2242085228 New IL
1365640150 WILLIAM RYAN HOMES 2242098617 New IL
1365647393 WILLIAM RYAN HOMES 2242098617 New IL
1365640153 TRAVELHERO.COM 2242101344 New IL
1365647398 TRAVELHERO.COM 2242101344 New IL
1365645613 PFIZER INC 2242122000 New IL
1365645614 HOSPIRA WORLDWIDE INC 2242122000 New IL
现在,我想删除ContactID大于其他重复记录的记录
这就是我被困的地方。我搜索了搜索结果,但没有找到任何符合这个谜题的东西
想法?您可以使用
行号()
和CTE。我认为这正是你想要的:
with cte as (
select row_number() over(partition by PhoneNumber, Status order by ContactID) rn
from contacts
where status = 'New'
)
delete from cte where rn > 1
查询删除另一条记录的记录,该记录具有相同的
PhoneNumber
和Status
以及最小的ContactID
,您可以使用行号()
和CTE。我认为这正是你想要的:
with cte as (
select row_number() over(partition by PhoneNumber, Status order by ContactID) rn
from contacts
where status = 'New'
)
delete from cte where rn > 1
查询将删除另一条记录的记录,该记录具有相同的
电话号码
和状态
,并且具有最小的联系人ID
我刚才正在读取第行的号码谢谢!我刚才在看排号谢谢!