Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

loại bỏ các bản ghi olde nhóm theo ba cột và sắp xếp theo ngày

Sử dụng ROW_NUMBER chức năng phân tích để tìm các hàng không phải là hàng mới nhất trong mỗi nhóm và sau đó bạn có thể sử dụng ROWID cột giả để tương quan với trong 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
)

Xóa 22 hàng.

db <> fiddle tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. đây là lỗi ORA-12154:TNS:không thể giải quyết định danh kết nối được chỉ định?

  2. Cài đặt mới JDBC cho Oracle - không thực thi

  3. Tuần làm việc SQL trong Oracle

  4. Có an toàn để đặt một chỉ mục trên Bảng tạm thời của Oracle không?

  5. Oracle:`(+)` làm gì trong mệnh đề WHERE?