ホームページ >データベース >mysql チュートリアル >1 つのインスタンスを保持したまま T-SQL で重複する行を削除するにはどうすればよいですか?
T-SQL: 単一行レコードを保持しながら冗長行をクリア
データの整合性を維持することは非常に重要であり、重複行を排除することは重要なステップです。この場合、データ入力エラーにより重複レコードが発生しました。目標はこれらの冗長な行を削除することですが、重複を 1 つだけ保持するように正確に行う必要があります。
解決策: CTE と ROW_NUMBER() を使用します
SQL 2005 以降では、ROW_NUMBER() OVER 句を含む共通テーブル式 (CTE) を使用して目的を達成できます。 CTE はフィルターとして機能し、関連するデータを分離します。一方、ROW_NUMBER() 関数は、事前定義されたパーティション グループ (この場合はキー列) 内の各行にシーケンス番号を割り当てます。
この手法を使用すると、必要な基準に基づいて重複行を分離できます。行番号が 1 より大きいかどうかをチェックする条件を含む WHERE 句を追加すると、冗長な行を特定して削除できます。
実績
<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 FROM cte WHERE [rn] > 1</code>
カスタマイズオプション
CTE の ORDER BY 句により、行の並べ替えが柔軟になります。最新の行を保持することが目的の場合は、関連する日時列によって結果を降順に並べます (たとえば、ORDER BY [baz] DESC)。並べ替え基準の選択は、特定のニーズに合わせて完全にカスタマイズできることに注意してください。
以上が1 つのインスタンスを保持したまま T-SQL で重複する行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。