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

Hvordan fjerner du dubletter, så der kun findes par i en tabel?

Du vil fjerne enhver række, hvor den forrige række har samme type. Så:

select timestamp, type
from (select t.*,
             lag(type) over (order by timestamp) as prev_type
      from ticket_events t
     ) t
where prev_type <> type or prev_type is null;

hvor klausul kan også formuleres som:

where prev_type is distinct from type

Hvis du vil slette de "fornærmende" rækker, kan du gøre følgende -- forudsat at tidsstempel er unik:

delete from ticket_events
    using (select t.*,
                  lag(type) over (order by timestamp) as prev_type
           from ticket_events t
          ) tt
    where tt.timestamp = t.timestamp and
          tt.prev_type = t.type;


  1. Hvad er standardnavnet i MySQL?

  2. html tredoblet i størrelse ved at returnere tomme tags efter en mysql-forespørgsel | hvordan løses - laravel

  3. PDO::fetch() LIMIT 1

  4. Vælg alle geospatiale punkter inde i en afgrænsningsramme