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

số hàng không hiển thị bất kỳ hàng nào khi sử dụng giữa từ khóa

Oracle rownum bắt đầu từ 1, vì vậy bạn sẽ không bao giờ nhận được rownum đầu tiên nếu bạn nói between 2 and N .

Cần phải có một hàng để "bắt đầu" trình tự cột giả rownum, do đó, bằng cách loại bỏ rownum 1 trong tiêu chí của bạn, bạn loại bỏ tất cả các rownum (hoặc mọi hàng về cơ bản đều có rownum 0 ).

Hãy nhìn vào nó như thế này. Bạn không nhận được ROWNUM cho đến khi cơ sở dữ liệu trả về một hàng cho bạn. Hàng đầu tiên của bất kỳ tiêu chí nào sẽ luôn là ROWNUM 1.

Bây giờ, mẹo bạn có thể sử dụng là sử dụng một truy vấn con. Mỗi truy vấn con sẽ có rownum của riêng nó và nếu bạn đặt bí danh cho tên cột khác, bạn có thể giữ nó thành các truy vấn bên ngoài và xử lý nó theo cách bạn muốn. Vì vậy, nếu bạn đang tìm cách triển khai phân trang của một tập hợp kết quả, thông thường bạn sẽ đặt bí danh rownum từ các kết quả bên trong dưới dạng rownum_ cho một truy vấn con bên ngoài để giới hạn với GIỮA.

select * from 
  (select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6

Nhưng lưu ý rằng tập kết quả bên ngoài sẽ có rownum của riêng nó, vì vậy bạn có thể làm:

select t2.*, rownum from 
  (select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6

Bạn sẽ thấy rownum trên kết quả cuối cùng vẫn bắt đầu từ 1, nhưng kết quả bên trong của bạn sẽ có rownum_ bắt đầu từ 2.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Thiếu dấu ngoặc phải theo thứ tự theo câu lệnh

  2. 11 cách tìm hàng trùng lặp có khóa chính trong Oracle

  3. Cách gọi một phương thức siêu đối tượng Oracle PL / SQL

  4. Hàm LOWER () trong Oracle

  5. Tham gia chéo trong Oracle