删除数据库SQL Server上的重复记录

时间:2016-02-03 09:27:07

标签: sql sql-server sql-delete

如果我有一张桌子leads

id|phone|name
__|_____|_____
1 |123  |Test
2 |123  |Test
3 |111  |Test2
4 |123  |Test

如何删除那里的重复电话号码?因此,如果有3条记录123作为电话号码,则应删除其他2个重复记录。

2 个答案:

答案 0 :(得分:2)

;WITH cte AS 
(
    SELECT *, RowNum = ROW_NUMBER() OVER (PARTITION BY phone, name ORDER BY id)
    FROM tbl    
)
DELETE FROM cte
WHERE RowNum > 1

答案 1 :(得分:1)

好的,从您的评论中,您显然是数据库新手。所以我可以告诉你尝试分组。有很多方法可以解决你问的问题

在您的情况下,最简单的方法是分组

select min(id) as id ,phone,name from leads group by phone,name.

你仍然可以使用row_number。

音乐在评论中提供的链接很好。你应该尝试自己理解