sql >> Database teknologi >  >> RDS >> PostgreSQL

Slet dublerede rækker fra tabellen

Du kan prøve dette at køre flere gange :

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

Hvor flere gange svarer til det maksimale antal gentagelser, du har i name kolonne.

Ellers kan du prøve denne mere komplekse forespørgsel:

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
    )
);

Hvis du kun kører denne forespørgsel én gang, bør du slette alt, hvad du har brug for. Har dog ikke prøvet det...



  1. Konverter 'datetime2' til 'date' i SQL Server (T-SQL-eksempler)

  2. Postgres fuldtekstsøgning:hvordan søger man flere ord i flere felter?

  3. Link til eller import af data fra Salesforce

  4. Indsæt flere rækker med samme primærnøgle i sql ved hjælp af php