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

テーブルから重複を削除します

    これは、すべてのテーブルに主キーが必要な多くの理由の1つです(必ずしもID番号またはIDENTITYである必要はありませんが、行を一意に識別し、データベースで一意性が適用される1つ以上の列の組み合わせ)。

    >

    あなたの最善の策は次のようなものです:

    SELECT field1, field2, field3, count(*) 
    INTO temp_table1
    FROM table1
    GROUP BY field1, field2, field3 having count(*) > 1
    
    DELETE T1
    FROM table1 T1
    INNER JOIN (SELECT field1, field2, field3
          FROM table1
          GROUP BY field1, field2, field3 having count(*) > 1) SQ ON
                SQ.field1 = T1.field1 AND
                SQ.field2 = T1.field2 AND
                SQ.field3 = T1.field3
    
    INSERT INTO table1 (field1, field2, field3)
    SELECT field1, field2, field3
    FROM temp_table1
    
    DROP TABLE temp_table1
    


    1. SQLServerの地理データ型を理解する方法

    2. MySQLとPostgreSQLのデッドロックを理解する

    3. 同じマシン上に複数のPostgresインスタンスを作成する

    4. SQL Server2008でテーブルエイリアスを使用してUPDATESQLを作成するにはどうすればよいですか?