[解決済み】T-SQL。重複する行をすべて削除するが、1つは残す[重複]。
2022-03-30 09:31:55
質問
非常に多くの行を持つテーブルがあります。重複は許されませんが、行の作成方法に問題があるため、このテーブルには重複があることが分かっています。 主要な列の観点から、余分な行を削除する必要があります。他のいくつかの列には わずかに のデータとは異なりますが、それは気にしません。しかし、私はこれらの行のうちの1つを保持する必要があります。SELECT DISTINCT はすべてのカラムを操作するのでうまくいきませんが、キーカラムに基づいて重複を抑制する必要があります。
余分な行を削除しても、1行を効率的に残すにはどうしたらよいでしょうか?
どのように解決するのですか?
お使いのバージョンが書かれていませんでしたが、SQL 2005 以降では、共通テーブル式に OVER句 . それは少し次のようなものです。
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
弄って見てください。
(編集: 役に立とうと、誰かが編集した
ORDER BY
節があります。はっきり言って、ここでは何でも好きなもので並べることができます。実際、ここでの一般的なユースケースは、"foo, bar" がグループ識別子で、"baz" がある種のタイムスタンプであることです。最新のものを維持するためには、次のようにします。
ORDER BY baz desc
)
関連
-
[解決済み] テスト
-
[解決済み] ora-06553 pls-306 'ogc_x' の呼び出しで引数の数または種類が誤っている。
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] 重複した行を削除するにはどうすればよいですか?
-
[解決済み] SQL Serverで、指定したテーブルを参照しているすべての外部キーを一覧表示するにはどうすればよいですか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] MySQLで重複した行を削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PL/SQL SELECTに複数のCOUNT(DISTINCT xxx)を指定すると、予期しない結果になる。
-
[解決済み】SQL Server: 無効なカラム名
-
[解決済み] WHERE x IN (5) vs WHERE x = 5 ...なぜINを使うのか?
-
[解決済み] ORA-01735: 無効な ALTER TABLE オプション - ヒキガエル
-
[解決済み] FROM のサブクエリにはエイリアスが必要です。
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] ORA-01821: ISO 8601 のローカルタイム付き日付のフォーマットが認識されないエラー
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない
-
[解決済み] PLS-00428: この SELECT 文では INTO 句が必要です。
-
[解決済み] 重複した行を削除するにはどうすればよいですか?