Warm tip: This article is reproduced from serverfault.com, please click

sql-删除某些列等于零的重复数据

(sql - Delete duplicate data that some columns equal zero)

发布于 2020-11-29 09:10:54

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

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

应该删除的行是col6 = 0和col7 = 0和col8 = 0的位置。

Questioner
yhassany
Viewed
11
Tim Biegeleisen 2020-11-29 17:22:42

我们可以在此处使用可删除的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个或更多的记录具有用于相同的值col1col2col3然后,我们删除满足其他3列要求的重复项。