ホームページ >データベース >mysql チュートリアル >キー列に基づいて T-SQL の重複行を効率的に削除する方法

キー列に基づいて T-SQL の重複行を効率的に削除する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-15 16:10:43318ブラウズ

How to Efficiently Delete Duplicate Rows in T-SQL Based on Key Columns?

主キー列に基づいて T-SQL の重複行を効率的に削除します

質問:

データ作成時のエラーにより、テーブルに多数の重複行が含まれています。目標は、主キー列の一意の組み合わせごとに 1 行を保持しながら、冗長な行を削除することです。ただし、表には質問に関係がなく、データがわずかに異なる列がいくつか含まれているため、無視する必要があります。

解決策:

SQL Server 2005 以降では、OVER() 関数と共通テーブル式 (CTE) を使用して重複行を効率的に削除できます。

CTE および DELETE ステートメント:

<code class="language-sql">WITH cte AS (
  SELECT [foo], [bar], 
     row_number() OVER(PARTITION BY foo, bar ORDER BY baz) AS [rn]
  FROM TABLE
)
DELETE cte WHERE [rn] > 1</code>

手順:

  • CTE は、foo 列と bar 列に基づいてソートされた行のサブセットを作成します。
  • ORDER BY baz 句はオプションであり、各パーティション (主キー列グループ) 内での順序付けが可能になります。
  • DELETE ステートメントは、CTE 内のランクが 1 より大きいすべての行を削除し、主キー列の組み合わせごとに 1 行を保持しながら重複を効果的に排除します。

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

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