1

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

这是我的示例数据

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

-----编辑在2个回复后添加,遇到另一个问题------

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

4

5 回答 5

5

试试这个 :

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

对该字段使用标识ID

于 2012-07-10T20:16:46.373 回答
0

为了得到重复,你可以做

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

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

于 2012-07-10T20:18:28.220 回答
0

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

INSERT INTO CustomerTotals
(CompanyName, Totals)
SELECT CompanyName, COUNT(*)
FROM Customer
GROUP BY CompanyName
HAVING Count(*) > 1
于 2012-07-10T20:21:49.027 回答
0

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

于 2012-07-11T05:08:16.373 回答
0

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

SELECT CompanyName, COUNT(*) AS Total
INTO #tempTable
FROM Customer
GROUP BY CompanyName 
HAVING Count(*) > 1
于 2017-04-16T07:04:44.300 回答