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

SQL - Loại bỏ các bản sao nâng cao bằng cách sử dụng ID NOT IN

Bạn có thể sử dụng ROW_NUMBER chức năng phân tích và xóa tương quan bằng cách sử dụng ROWID cột giả:

DELETE FROM my_table
WHERE ROWID IN (
  SELECT ROWID
  FROM   (
    SELECT ROW_NUMBER() OVER (
             PARTITION BY student_id, subject_id, class_id
             ORDER BY expertise_lvl DESC
           ) AS rn
    FROM   my_table
  )
  WHERE  rn > 1
)

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. Tạo một biểu mẫu Apex với nhiều trang

  2. Phiên bản SQL Server của Oracle's ADD_MONTHS ()

  3. 2 cách để định dạng một số với Zeros hàng đầu trong Oracle

  4. Kết quả Đặt mã hóa ký tự getString cho các ký tự unicode

  5. vấn đề với cú pháp sql