Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

hapus catatan lama yang dikelompokkan berdasarkan tiga kolom dan pesan berdasarkan tanggal

Gunakan ROW_NUMBER fungsi analitik untuk menemukan baris yang bukan yang terbaru di setiap grup dan kemudian Anda dapat menggunakan ROWID pseudo-kolom untuk dikorelasikan dengan DELETE :

DELETE FROM tmp_data
WHERE ROWID IN (
  SELECT rid
  FROM   (
    SELECT ROWID As rid,
           ROW_NUMBER() OVER (
             PARTITION BY col_2, col_3, col_6
             ORDER BY col_4 DESC
           ) AS rn
    FROM   tmp_data
  )
  WHERE rn > 1
)

Yang menghapus 22 baris.

db<>fiddle di sini




  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 menjalankan fungsi dari TOAD untuk Oracle dan mengikat hasilnya ke kisi data?

  2. Oracle - Masalah membuat pemicu yang memperbarui tabel lain

  3. KESALAHAN pada baris 191:ORA-01489:hasil rangkaian string terlalu panjang

  4. Oracle SQL Developer menyalin database langkah demi langkah

  5. Cara tercepat untuk memperbarui sejumlah besar baris dengan input param List<T> di MyBatis ke Oracle db