首页 > 解决方案 > 如何从唯一代码列中查找重复项并删除它们附加的行,同时仍保留原始行?

问题描述

我在我的 azure sql server 中有一个名为 dbo.SQL_Transactional 的表,并且有列的标题为代码、销售日期、分支代码

code 是我的主键,所以如果有 2 行或更多行具有相同的代码,它们是重复的,需要删除。我该怎么做?我不需要担心 saledate 或 branchcode 是否重复,因为如果代码重复,那么我只需要能够删除整个重复行。

标签: sqltsqlazure-sql-server

解决方案


如果您只想删除重复的行,请尝试可更新的 CTE:

with todelete as (
      select t.*, row_number() over (partition by code order by code) as seqnum
      from t
     )
delete from todelete
    where seqnum > 1;

如果您只想选择一行,那么您将使用where seqnum = 1.


推荐阅读