sql - 删除某些列为零的重复数据
问题描述
我有具有 col1、col2、col3、col4、col5、col6、col7、col8、col9、col10 的 SQL Server 表。
我想删除基于 col1、col2、col3 的重复项。
应该删除的行是 col6=0 and col7=0 and col8=0。
解决方案
我们可以在这里使用可删除的 CTE:
WITH cte AS (
SELECT *, COUNT(*) OVER (PARTITION BY col1, col2, col3) cnt
FROM yourTable
)
DELETE
FROM cte
WHERE cnt > 1 AND col6 = 0 AND col7 = 0 AND col8 = 0;
上面的 CTE 根据您的定义识别“重复项”,即 2 条或更多条记录具有相同的col1
、col2
和值col3
。然后我们删除满足其他 3 列要求的重复项。