首页 > 解决方案 > 删除某些列为零的重复数据

问题描述

我有具有 col1、col2、col3、col4、col5、col6、col7、col8、col9、col10 的 SQL Server 表。

我想删除基于 col1、col2、col3 的重复项。

应该删除的行是 col6=0 and col7=0 and col8=0。

标签: sqlsql-servertsql

解决方案


我们可以在这里使用可删除的 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 条或更多条记录具有相同的col1col2和值col3。然后我们删除满足其他 3 列要求的重复项。


推荐阅读