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

Jak odstranit duplikáty, aby v tabulce existovaly pouze páry?

Chcete odstranit jakýkoli řádek, kde má předchozí řádek stejný typ. Takže:

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;

where klauzuli lze také formulovat jako:

where prev_type is distinct from type

Pokud chcete odstranit „nevhodné“ řádky, můžete provést následující – za předpokladu, že timestamp je unikátní:

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. Dotaz na vlastní parametr postgresql pomocí příkazu SELECT

  2. INTERVAL MySQL Min

  3. Jak používat funkci NVL() v Oracle

  4. Aplikace pro webový chat využívající technologii Long-Polling s PHP, MySQL a jQuery