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

SQL (ORACLE):ORDER BY và LIMIT

Trước 12.1, Oracle không hỗ trợ LIMIT hoặc OFFSET từ khóa. Nếu bạn muốn truy xuất các hàng từ N đến M của một tập kết quả, bạn cần một cái gì đó như:

SELECT a.*
  FROM (SELECT b.*,
               rownum b_rownum
          FROM (SELECT c.*
                  FROM some_table c
                 ORDER BY some_column) b
         WHERE rownum <= <<upper limit>>) a
 WHERE b_rownum >= <<lower limit>>

hoặc sử dụng các hàm phân tích:

SELECT a.*
  FROM (SELECT b.*,
               rank() over (order by some_column) rnk
          FROM some_table)
 WHERE rnk BETWEEN <<lower limit>> AND <<upper limit>>
 ORDER BY some_column

Một trong hai cách tiếp cận này sẽ sắp xếp cung cấp cho bạn các hàng từ N đến M của kết quả được sắp xếp.

Trong 12.1 trở lên, bạn có thể sử dụng OFFSET và / hoặc FETCH [FIRST | NEXT] toán tử:

SELECT *
  FROM some_table
 ORDER BY some_column
 OFFSET <<lower limit>> ROWS
  FETCH NEXT <<page size>> ROWS ONLY



  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ổng hợp kết nối ODP.NET:Cách biết kết nối đã được sử dụng hay chưa

  2. Làm thế nào để hiển thị kích thước lược đồ Oracle với truy vấn SQL?

  3. Ngoại lệ ORA-08103:đối tượng không còn tồn tại khi sử dụng setfetchsize của Hibernate

  4. _gc_fusion_compression

  5. Cách điều chỉnh sql trong Oracle