更新重复行然后删除除一个以外的所有行

时间:2012-08-13 19:12:52

标签: sql count duplicate-removal

我正在使用SQL Server 2005尝试查找某个项目的所有重复项并更改数量,以使其等于重复项目的数量。然后我计划删除除了一行之外的所有重复行。

这是我到目前为止所拥有的:

UPDATE Table
SET Quantity = COUNT(Item)
WHERE COUNT(Item) > 1

SELECT * FROM Item

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这是一种做你想做的事情的方法。

with toupdate as (
     select item, count(*) as cnt
     from t
     group by item
    )
update t
    set quantity = cnt
    from toupdate
    where t.item = toupdate.item

CTE计算每个项目的值。然后update子句进行更新。