2017-09-08 145 views
1

我想删除除第一条记录以外的所有重复记录。删除SQL中第一条记录以外的重复记录

像:

NAME 
R 
R 
rajesh 
YOGESH 
YOGESH 

现在,在上面我想删除第二个“R”,第二个“约杰什”。

我只有一个名字是“NAME”的列。

+2

删除或选择唯一值? –

+0

删除重复但只有第一个除外。 –

+1

如果他们是一样的,你会如何知道它是否是第一个?它真的很重要吗?而且由于你只有1列,所以没有第一个,因为表是无序集。 –

回答

5

使用CTE(我有几个的,这些在生产中)。

;WITH duplicateRemoval as (
    SELECT 
     [name] 
     ,ROW_NUMBER() OVER(PARTITION BY [name] ORDER BY [name]) ranked 
    from #myTable 
    ORDER BY name 
) 
DELETE 
FROM duplicateRemoval 
WHERE ranked > 1; 

说明:该CTE将抓住所有的记录和申请行号为每个独特的条目。每个附加条目都会得到一个递增的数字。将DELETE替换为SELECT *以查看它的功能。

+0

如果超过2,则将where谓词更改为> 1。:) –

+0

@SeanLange你是绝对正确的 - 我更新了它。 – Eli

+0

@Eli感谢您的支持。 –

3

似乎是一个简单distinct修改会做的伎俩:

SELECT DISTINCT name 
FROM mytable