使用SQL Server 2016
我发现使用行上分区方法最快地复制大型表中的行。我正在尝试使用相同的过程删除一些重复项,但现在情况很特殊。
基本上,我需要删除除一个列外所有列上重复的行。但是,如果排除的列也被复制,则允许重复这些行,但是如果不同则不允许。
例如
col1 col2 col3 col4
1 2 3 4
1 2 3 4
1 2 3 5
前2行将被保留,但第三行需要删除。
通常,我将使用下面的代码删除按特定条件重复的行,但是我不知道如何解决当前情况。
delete x from (select col1, ROW_NUMBER()
over (partition by col1 order by col1) As rn From table1) x
where rn > 1
感谢您的帮助。 仅供参考,该表包含2.26亿行。
答案 0 :(得分:0)
我认为您要计数而不是行号:
with todelete as (
select t1.*,
count(*) over (partition by col1, col2, col3, col4) as cnt,
from t1
)
delete from todelete
where cnt > 1;