ホームページ >データベース >mysql チュートリアル >単一のクエリを使用して特定のフィールドに基づいて SQL Server の重複レコードを削除する方法

単一のクエリを使用して特定のフィールドに基づいて SQL Server の重複レコードを削除する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-12 12:06:44508ブラウズ

How to Delete Duplicate Records in SQL Server Based on a Specific Field Using a Single Query?

特定のフィールドに基づいて 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>

説明:

  • ウィンドウ関数 row_number() は、各パーティションの各レコード (EmployeeName で定義) に 1 から始まる数値ランクを割り当てるために使用されます。
  • 削除ステートメントは、rn が 1 より大きい重複行をターゲットにします。

削除されたレコードの表示:

実際に削除ステートメントを実行せずに削除されるレコードをプレビューするには、次の選択クエリを使用します。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。