1

SQL Server 2008 RD を使用しています。

次の表myTableは、いくつかの列で構成されています。AccIDそしてAccName私が興味を持っている列であり、それらのどれもが主キーではありません。したがって、少なくとも重複しているすべてのレコードを取得したいと考えています ( と に一致する行が 2 つ以上ある可能性がありますAccID) AccName

  AccID     AccName
1 333       SomeName1
2 333       SomeName1
3 444       SomeName2
4 444       SomeName2
5 444       SomeName2

SQLでこれを行うにはどうすればよいですか?

4

4 に答える 4

2

この方法を試してください:

select m1.AccID, m1.AccName 
from   myTable m1
join   ( select AccID,AccName 
         from myTable  
         group by AccID,AccName
         having count(1) = 2 
        ) m2 on   m1.AccID   = m2.AccID
             and  m1.AccName =  m2.AccName
于 2013-07-22T14:27:06.640 に答える
2

すべてのレコード (重複値の名前だけでなく) が必要な場合は、count()ウィンドウ関数を使用することをお勧めします。

select t.*
from (select t.*, count(*) over (partition by AccID, AccName) as cnt
      from mytable t
     ) t
where cnt > 1;
于 2013-07-22T14:33:41.707 に答える
1
select t.*
from myTable t
inner join
(
  select AccID, AccName
  from myTable
  group by AccID, AccName
  having count(1) > 1
) agg on t.AccID = agg.AccID and t.AccName = agg.AccName
于 2013-07-22T14:27:19.837 に答える