【问题标题】:SQL - Find Duplicates, then add to another table with countSQL - 查找重复项,然后添加到另一个具有计数的表
【发布时间】:2012-07-10 09:30:04
【问题描述】:

有大量关于如何查找重复行、删除它们或列出重复行的列表。在我尝试在这里搜索的大量回复中,这些是我找到的唯一回复。我想我会提出我的问题,因为已经一个小时了,但仍然没有运气。

这是我的示例数据

Table Name: Customers
_____________________________
ID   | CompanyName
--------------
1    | Joes
2    | Wendys
3    | Kellys
4    | Ricks
5    | Wendys
6    | Kellys
7    | Kellys

我需要能够找到此表中的所有重复项,然后将结果放入另一个表中,其中列出了公司名称是什么,以及找到了多少个重复项。

例如上面的表格,我应该有一个新表格,上面写着类似

Table Name: CustomerTotals
_______________________________
ID   | CompanyName  |   Totals
-------------------------------
1    | Joes         |    1
2    | Wendys       |    2
3    | Kellys       |    3
4    | Ricks        |    1

-----EDIT 2 个回复后添加,遇到另一个问题------

感谢您的回复!相反的呢?假设我只想从 CustomerTotals 表中不存在的客户表中将项目添加到新表“UniqueCustomers”?

【问题讨论】:

  • 查看答案,尚不清楚ID 字段应该是什么。它应该是一个身份,还是每个组的MIN(id)

标签: sql sql-server count duplicates


【解决方案1】:

试试这个:

INSERT INTO CustomerTotals
(CompanyName, Totals)
SELECT CompanyName, COUNT(*)
FROM Customer
GROUP BY CompanyName

ID 字段使用identity 列。

【讨论】:

  • 谢谢!相反的呢?假设我只想从 CustomerTotals 表中不存在的客户表中将项目添加到新表“UniqueCustomers”?
【解决方案2】:

为了得到重复,你可以这样做

Insert into CustomerTotals (Id, CompanyName, Totals)
    Select min(Id), CompanyName, count(*) From Customers
    group by CompanyName  

你得到了结果,保留了每个公司名称的最小 id(如果你真的需要原始表中的第一个 id,正如我在结果中看到的那样)。 如果没有,您可以使用身份列

【讨论】:

    【解决方案3】:

    如果您只想将重复项插入到第二个表中,请使用:

    INSERT INTO CustomerTotals
    (CompanyName, Totals)
    SELECT CompanyName, COUNT(*)
    FROM Customer
    GROUP BY CompanyName
    HAVING Count(*) > 1
    

    【讨论】:

      【解决方案4】:

      上面的例子都很好。但是您应该使用count(1) 而不是count(*) 来提高性能。 阅读this问题。

      【讨论】:

        【解决方案5】:

        我认为下面的脚本是最简单的...

        SELECT CompanyName, COUNT(*) AS Total
        INTO #tempTable
        FROM Customer
        GROUP BY CompanyName 
        HAVING Count(*) > 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-28
          • 1970-01-01
          • 1970-01-01
          • 2020-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多