我有具有col1,col2,col3,col4,col5,col6,col7,col8,col9,col10的SQL Server表。
我想删除基于col1,col2,col3的重复项。
应该删除的行是col6 = 0和col7 = 0和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列要求的重复项。