ホームページ >データベース >mysql チュートリアル >T-SQL を使用して SQL Server の重複レコードを効率的に削除する方法
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
ステートメントを実行する前に、影響を受ける行をプレビューすることが重要です。 これを実現するには、DELETE
を SELECT
に置き換えます。
<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 サイトの他の関連記事を参照してください。