sql >> Databáze >  >> RDS >> PostgreSQL

Odstraňte duplikát z tabulky

To je jeden z mnoha důvodů, proč by všechny tabulky měly mít primární klíč (ne nutně ID číslo nebo IDENTITY, ale kombinaci jednoho nebo více sloupců, které jednoznačně identifikují řádek a jejichž jedinečnost je vynucena v databázi).

Nejlepším řešením je něco takového:

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. Jak aktualizovat dvě tabulky v jednom příkazu v SQL Server 2005?

  2. Co je to vygenerovaný sloupec?

  3. Jak zavolat uloženou proceduru uvnitř balíčku Oracle s Entity Framework?

  4. Návrh databáze S Vertabelo