ホームページ >データベース >mysql チュートリアル >T-SQL を使用して SQL Server の重複レコードを効率的に削除する方法

T-SQL を使用して SQL Server の重複レコードを効率的に削除する方法

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-12 11:57:43703ブラウズ

How to Efficiently Delete Duplicate Records in SQL Server Using T-SQL?

T-SQL を使用した SQL Server の重複行の削除

このガイドでは、T-SQL を使用して SQL Server テーブルから重複行を効果的に削除する方法を、特定の列に焦点を当てて説明します。 例として、Employee 列を持つ EmployeeName テーブルを使用してみましょう。 目的は、一意の各従業員名のインスタンスを 1 つだけ保持することです。

堅牢な方法ではウィンドウ関数を利用します。次のクエリはこれを実現します:

<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 値の各グループ (パーティション) 内の各行に一意のランクを割り当てます。 PARTITION BY EmployeeName 句は行をグループ化し、ORDER BY empId は各グループ内のランキング順序を決定します (empId が一意の識別子であると仮定します)。 rnはランクを表します。

WHERE rn > 1 句は、各グループ内のランクが 1 より大きい行をターゲットにし、最初に出現した行 (ランクが 1) を除くすべての重複を効果的に削除します。

DELETE ステートメントを実行する前に、影響を受ける行をプレビューすることが重要です。 これを実現するには、DELETESELECT に置き換えます。

<code class="language-sql">SELECT *
FROM (
  SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId)
  FROM Employee
) x
WHERE rn > 1;</code>

これにより、データを完全に削除する前に検証が可能になります。

以上がT-SQL を使用して SQL Server の重複レコードを効率的に削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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