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

Áp dụng OFFSET và LIMIT trong ORACLE cho các Truy vấn Tham gia phức tạp?

Bạn có thể sử dụng các hàm Phân tích như ROW_NUMBER() trong một truy vấn con cho Oracle 11g giả sử bạn cần xếp các hàng từ thứ 3 đến thứ 8 để nắm bắt được OFFSET 3 LIMIT 8 logic trong Oracle DB ( thực sự những mệnh đề đó được bao gồm cho các phiên bản 12c+ ), bất cứ khi nào kết quả phải được nhóm theo CREATE_DATE và sắp xếp theo ID của các phòng ban:

SELECT q.*
  FROM (SELECT DEPT.ID rowobjid,
               DEPT.CREATOR createdby,
               DEPT.CREATE_DATE createddate,
               DEPT.UPDATED_BY updatedby,
               DEPT.LAST_UPDATE_DATE updateddate,
               DEPT.NAME name,
               DEPT.STATUS status,
               statusT.DESCR statusdesc,
               REL.ROWID_DEPT1 rowidDEPT1,
               REL.ROWID_DEPT2 rowidDEPT2,
               DEPT2.DEPT_FROM_VAL parentcid,
               DEPT2.NAME parentname,
               ROW_NUMBER() OVER (PARTITION BY DEPT.CREATE_DATE ORDER BY DEPT.ID) AS rn
          FROM TEST.DEPT_TABLE DEPT
          LEFT JOIN TEST.STATUS_TABLE statusT
            ON DEPT.STATUS = statusT.STATUS
          LEFT JOIN TEST.C_REL_DEPT rel
            ON DEPT.ID = REL.ROWID_DEPT2
          LEFT JOIN TEST.DEPT_TABLE DEPT2
            ON REL.ROWID_DEPT1 = DEPT2.ID) q
 WHERE rn BETWEEN 3 AND 8;

trả về chính xác 6 (8-3 + 1) hàng. Nếu bạn cần bao gồm các mối quan hệ (các giá trị bằng nhau cho danh tính bộ phận cho mỗi ngày tạo), ROW_NUMBER() nên được thay thế bằng một hàm cửa sổ khác có tên là DENSE_RANK() vì tất cả các phần khác của truy vấn vẫn giữ nguyên. Ít nhất 6 hồ sơ sẽ trả lại trong trường hợp nà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. ORA-01005 lỗi kết nối với ODP.Net

  2. Trở về từ Thế giới mở 2013

  3. Chèn mảng byte [] dưới dạng đốm màu trong Cơ sở dữ liệu Oracle nhận ORA-01460:yêu cầu chuyển đổi chưa thực hiện hoặc không hợp lý

  4. So sánh chuỗi trong Oracle Case khi

  5. Con trỏ cho vòng lặp trong Oracle