删除column_id为xyz的所有行,除了一个随机选择的行

时间:2013-08-02 22:52:41

标签: sql-server-2008

我在表格中有这样的记录

ID   Name   Value
1    abc    123
2    abc    152
3    cde    574
4    def    153
5    abc    777

如何根据此算法从上面的列中删除行

我们对3行有相同的名称(ID:1,2,5)。删除除随机选择的任何行之外的所有这些行。同样适用于其他名称

可以使用sql或T-SQL吗?

1 个答案:

答案 0 :(得分:1)

;with d as (
    select *, rowNum = row_number() over (partition by Name order by checksum(newid()))
    from TableName
)
delete d
where rowNum > 1