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

Xóa các hàng trùng lặp trong Oracle SQL, để lại các mục mới nhất

Đây là một cách tiếp cận bằng cách sử dụng id hàng:

delete from transaction
where 
    last_update = date '2020-03-01'
    and rowid in (
        select rid
        from (
            select 
                rowid rid, 
                row_number() over(partition by par_num ,tran_num order by last_update desc) rn
            from transaction                
        ) t
        where rn > 1
    )

Truy vấn con tạo danh sách id hàng cho các hàng không phải là hàng mới nhất trong nhóm của chúng (nghĩa là tất cả các bản ghi có cùng par_num ,tran_num ) - bản ghi gần đây nhất cho mỗi nhóm được xác định bằng cách sử dụng row_number() . Truy vấn bên ngoài chỉ xóa các hàng đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cân nhắc về hiệu suất cho dữ liệu tạm thời trong Oracle

  2. Kết nối PDO với cơ sở dữ liệu Oracle

  3. Hàm CURRENT_TIMESTAMP () trong Oracle

  4. lấy kết quả từ truy vấn

  5. Xử lý ngoại lệ trong pl / sql