ホームページ >データベース >mysql チュートリアル >単一のクエリを使用して特定のフィールドに基づいて SQL Server の重複レコードを削除する方法
特定のフィールドに基づいて SQL Server の重複レコードを削除します
「Employee」という名前のテーブルがあり、「EmployeeName」という名前の列が含まれているとします。タスクは、「EmployeeName」フィールドに基づいて冗長レコードを削除し、次のデータを取得することです:
EmployeeName |
---|
Anand |
Anil |
Dipak |
SQL Server で TSQL を使用して単一のクエリでこれを実現するにはどうすればよいですか?
ウィンドウ関数を使用した解決策:
この問題を解決するには、ウィンドウ関数を使用することが考えられます。ウィンドウ関数を使用すると、OVER 句で定義されたパーティション内の一連の行に対して操作を実行できます。この例では、パーティションは「EmployeeName」列によって定義されます。
次のクエリは、「EmployeeName」フィールドに基づいて重複レコードを効果的に識別して削除します。
<code class="language-sql">delete x from ( select *, rn=row_number() over (partition by EmployeeName order by empId) from Employee ) x where rn > 1;</code>
説明:
削除されたレコードの表示:
実際に削除ステートメントを実行せずに削除されるレコードをプレビューするには、次の選択クエリを使用します。
<code class="language-sql">select * from ( select *, rn=row_number() over (partition by EmployeeName order by empId) from Employee ) x where rn > 1;</code>
以上が単一のクエリを使用して特定のフィールドに基づいて SQL Server の重複レコードを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。