PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menghapus duplikat sehingga hanya pasangan yang ada di tabel?

Anda ingin menghapus setiap baris di mana baris sebelumnya memiliki jenis yang sama. Jadi:

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 klausa juga dapat diutarakan sebagai:

where prev_type is distinct from type

Jika Anda ingin menghapus baris "yang menyinggung", Anda dapat melakukan hal berikut -- dengan asumsi bahwa timestamp 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengonversi postgres json ke integer

  2. Sqlalchemy tidak berfungsi dengan pagination

  3. Masalah memesan karakter beraksen di PostgreSQL 8.4

  4. Bisakah saya menggunakan nilai pengembalian INSERT...RETURNING di INSERT lain?

  5. Mengotomatiskan Audit Keamanan untuk PostgreSQL