SQL Server:选择col1 + col2不止一次存在的所有重复行

时间:2015-07-13 10:48:56

标签: sql-server join duplicates

我有一张大约300,000行的表格。自2015年3月16日至2015年7月9日,每天有225行添加到此表中

我的问题是,从过去1周左右开始,表格中输入了一些重复的行(即每天超过225行)

现在我想选择(并最终删除!)表格中所有重复的行,这些行在一个日期列中存在多于1个siteID + reportID组合。

屏幕截图中附有示例:

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您想过滤重复的行,我建议您使用此类查询:

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY siteID, reportID, [Date] ORDER BY ID) As seq
    FROM yourTable) dt
WHERE (seq > 1)

像这样:

abstract class A {}

class B extends A {}

class C {
    public void show(A a) {}
}

答案 1 :(得分:0)

当Row_Number()与Partition By子句一起使用时,它可以让SQL开发人员在表中选择重复的行

请查看how to delete duplicate rows in SQL table上的SQL教程 以下查询是从该文章中复制并应用于您的要求的内容:

;WITH DUPLICATES AS
(
SELECT *,
  RN = ROW_NUMBER() OVER (PARTITION BY siteID, ReportID ORDER BY Date)
FROM myTable
)
DELETE FROM DUPLICATES WHERE RN > 1

我希望它有所帮助,