我有一个组织的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,这样我才能浏览用户列表。
3 回答
不负相思意
TA贡献1777条经验 获得超10个赞
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
慕侠2389804
TA贡献1719条经验 获得超6个赞
您可以运行以下查询,并找到重复项max(id)并删除这些行。
SELECT orgName, COUNT(*), Max(ID) AS dupes
FROM organizations
GROUP BY orgName
HAVING (COUNT(*) > 1)
但是您必须多次运行此查询。
- 3 回答
- 0 关注
- 868 浏览
添加回答
举报
0/150
提交
取消