-1

私のテーブルはこんな感じです.....


**AttName**     **Title**        **Count_Index**

Red                Boys              1
Red                Girls             2
Green              Boys              1
Blue               Boys              1

ただ帰りたい…

Red  Boys        1
Red  Girls       2

これは、赤に 2 つのエントリがあるため、カウントが 1 のみの場合、すべての ROW をスキップ/削除したいということです。つまり、カウントが「1」を超えた場合にのみ行に関心があります。

4

2 に答える 2

0

わかりました、これはテストされています。重複などを探すときは、ウィンドウ関数を使用するのが好きです。特に、where 句で、同じテーブルから 2 回副選択を行うことを回避するためです。代わりに、必要なすべての列がすでに副選択に取り込まれています。ウィンドウ関数は時々高価になることがありますが。

Select *, ROW_NUMBER() over (Partition by AttrName Order By AttrName) --probably better to order by whatever the primary key is for consistent results, esepcially if you plan to use this in a delete statement
From (
  SELECT AttName, title, COUNT(AttrName) over (partition by AttrName) as cnt
  FROM yourtable
) as counted
Where counted.cnt > 1
于 2013-05-02T22:38:41.840 に答える