sql >> データベース >  >> RDS >> Sqlserver

T-SQL:重複するすべての行を削除しますが、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を編集しました CTE内の条項。明確にするために、ここでは任意の順序で並べ替えることができます。cteによって返される列の1つである必要はありません。実際、ここでの一般的な使用例は、「foo、bar」がグループ識別子であり、「baz」が何らかのタイムスタンプであるというものです。最新の状態に保つには、ORDER BY baz descを実行します。 )



    1. SQLiteデータベースに挿入android

    2. T-SQLを使用してリンクサーバー上にテーブルを作成する2つの方法

    3. SQLite COUNT

    4. MICROSECOND()の例– MySQL