Sql 如何从表中删除重复行,但保留不同的行?

Sql 如何从表中删除重复行,但保留不同的行?,sql,tsql,rank,Sql,Tsql,Rank,关键是,整行都是一样的 表: Hello Hello Hello Bye Bye Good Morning Good Morning 我想离开: Hello Bye Good Morning 我知道您可以在这里使用RANK(),但我从未真正使用过它,所以我不太确定 有人能帮我一下吗?您可以使用行数()然后删除表中没有行数1的所有内容: ;with cte as ( select col, row_number() over(partition by col order by co

关键是,整行都是一样的

表:

Hello
Hello
Hello
Bye
Bye
Good Morning
Good Morning
我想离开:

Hello
Bye
Good Morning
我知道您可以在这里使用RANK(),但我从未真正使用过它,所以我不太确定


有人能帮我一下吗?

您可以使用
行数()
然后删除表中没有行数1的所有内容:

;with cte as
(
  select col,
    row_number() over(partition by col order by col) rn
  from yourtable
)
delete 
from cte 
where rn > 1;

请参见

您是否可以显示表定义,或者这是表中唯一的列?您是否可以选择distinct进入一个新的(temp)表,然后截断原始表并从temp重新填充?唯一会阻碍这一点的是引用完整性,但如果您不必担心这一点,我认为这是最简单的方法+1-sql fiddle看起来棒极了!谢谢你,伙计。需要10分钟才能接受:)@Rj。不客气!!