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

重複する行を削除するにはどうすればよいですか?

    nullがないと仮定すると、GROUP BY 一意の列、およびSELECT MIN (or MAX) 保持する行としてのRowId。次に、行IDを持たないものをすべて削除します:

    DELETE FROM MyTable
    LEFT OUTER JOIN (
       SELECT MIN(RowId) as RowId, Col1, Col2, Col3 
       FROM MyTable 
       GROUP BY Col1, Col2, Col3
    ) as KeepRows ON
       MyTable.RowId = KeepRows.RowId
    WHERE
       KeepRows.RowId IS NULL
    

    整数ではなくGUIDがある場合は、置き換えることができます

    MIN(RowId)
    

    CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))
    


    1. SQLServerインスタンス上のすべてのデータベースから主キー制約のリストを取得する方法-SQLServer/TSQLチュートリアルパート60

    2. OracleのSIN()関数

    3. インストーラーリソース(wxsファイル、dmg-script、icon)をどこに配置する必要があり、自己完結型アプリをデプロイするときにMavenantrunを構成する方法

    4. 警告:ヘッダー情報を変更できません-ヘッダーはすでにエラーによって送信されています