sql >> Database >  >> RDS >> PostgreSQL

Duplicaat uit een tabel verwijderen

Dit is een van de vele redenen waarom alle tabellen een primaire sleutel zouden moeten hebben (niet noodzakelijk een ID-nummer of IDENTITEIT, maar een combinatie van een of meer kolommen die een rij uniek identificeert en waarvan de uniciteit wordt afgedwongen in de database).

Uw beste gok is zoiets als dit:

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. SQL Server:converteer ((int)jaar,(int)maand,(int)dag) naar Datumtijd

  2. NULLIF() Functie in Oracle

  3. Hoe kan ik kolomopmerkingen in PostgreSQL invoegen via Python?

  4. ORACLE 11g standaard ongevoelig voor hoofdletters