我有一个组织的SQL Server数据库,并且有很多重复的行。我想运行一条select语句以获取所有这些信息和重复数量,而且还返回与每个组织关联的ID。

如下语句:

SELECT     orgName, COUNT(*) AS dupes
FROM         organizations
GROUP BY orgName
HAVING      (COUNT(*) > 1)

将返回类似
orgName        | dupes
ABC Corp       | 7
Foo Federation | 5
Widget Company | 2

但我也想获取它们的ID。有什么办法吗?也许像一个
orgName        | dupeCount | id
ABC Corp       | 1         | 34
ABC Corp       | 2         | 5
...
Widget Company | 1         | 10
Widget Company | 2         | 2

原因是还有一个单独的链接到这些组织的用户表,我想统一它们(因此,请删除重复对象,以便用户链接到同一组织而不是重复组织)。但是我想手动分开,所以我不会搞砸任何东西,但是我仍然需要一条语句返回所有重复组织的ID,以便我可以浏览用户列表。

最佳答案

select o.orgName, oc.dupeCount, o.id
from organizations o
inner join (
    SELECT orgName, COUNT(*) AS dupeCount
    FROM organizations
    GROUP BY orgName
    HAVING COUNT(*) > 1
) oc on o.orgName = oc.orgName

关于sql - 在SQL Server中查找重复的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2112618/

10-10 12:39