ホームページ > データベース > mysql チュートリアル > 1 つのインスタンスを保持したまま T-SQL で重複する行を削除するにはどうすればよいですか?

1 つのインスタンスを保持したまま T-SQL で重複する行を削除するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-15 16:09:44
オリジナル
191 人が閲覧しました

How Can I Delete Duplicate Rows in T-SQL While Keeping One Instance?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート