SQL删除一个值重复的所有行

时间:2016-12-22 15:12:09

标签: sql

假设我有一个像这样的列的表

1
1
1
2
3
4
5
5

我需要做一些让它看起来像这样的事情:

2
3
4

我不能使用DISTINCT,因为它将保留“1”和“5”中的至少一个。所以,我只想删除所有内容,如果它在表中的任何位置具有相同的值。

3 个答案:

答案 0 :(得分:2)

delete from your_table
where col in
(
  select col from your_table group by col having count(*) > 1
)

答案 1 :(得分:1)

select MyNum, count(MyNum)
from MyTable
group by MyNum
having count(MyNum) = 1

答案 2 :(得分:0)

如果您使用SQL SERVER,则可以通过CTECOUNT Over()窗口聚合函数轻松实现此功能

;with cte as
(
Select count(1) over(partition by your_col) cnt,*
)
Delete from CTE where cnt > 1