0

外部ソースから自動的に入力されたテーブルから一連の名前を表示するために、このクエリを作成しています。

select MAX(UN_ID) as [ID] , MAX(UN_Name) from UnavailableNames group by (UN_Name) 

名前の重複が多いので、「Group by」を使いました

この選択クエリを実行した直後に、すべての重複を削除したい.. (フィールド UN_Name が 2 回使用可能な場所を削除し、1 回残します)

これを行う方法はありますか?

4

2 に答える 2

2

このようなものはうまくいくはずです:

WITH CTE AS 
(
    SELECT rn = ROW_NUMBER() 
                OVER( 
                  PARTITION BY UN_Name
                  ORDER BY UN_ID ASC), * 
    FROM dbo.UnavailableNames
) 
DELETE FROM cte 
WHERE  rn > 1 

基本的に、同じ「un_name」を共有する各グループ内で増加する「行番号」を割り当てます。

次に、1より大きい「行番号」を持つすべての行を削除し、最初に表示されたすべての行を保持します。

于 2013-10-17T14:02:01.123 に答える