1. ホーム
  2. sql

[解決済み】SQL Serverで重複する行を検索する。

2022-04-04 08:57:47

質問

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