sql >> Databasteknik >  >> RDS >> PostgreSQL

Ta bort dubbletter av rader från tabellen

Du kan prova att detta körs flera gånger :

delete from mytable where id in (
    select max(id)
      from mytable
     group by name
    having count(1) > 1
);

Där flera gånger är lika med det maximala antalet repetitioner du har i name kolumn.

Annars kan du prova den här mer komplexa frågan:

delete from mytable where id in (
    select id from mytable
    except 
    (
    select min(id)
      from mytable
     group by name
    having count(1) > 1
    union all
    select min(id)
      from mytable
     group by name
    having count(1) = 1
    )
);

Om du bara kör den här frågan en gång bör du radera allt du behöver. Har dock inte testat det...



  1. Anpassade grafer för att övervaka dina MySQL-, MariaDB-, MongoDB- och PostgreSQL-system - ClusterControl-tips och tricks

  2. Hur man går igenom en mysql-resultatuppsättning

  3. MySQL:jämförelse av heltalsvärde och strängfält med index

  4. fylla i två spinnare från mysql-databasen som är beroende av varandra