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

tìm nạp dữ liệu bằng rownum trong oracle

rownum là một cột giả đếm các hàng trong tập kết quả sau mệnh đề where đã được áp dụng.

  SELECT table_name
    FROM user_tables
    WHERE rownum > 2;
TABLE_NAME                     
------------------------------

0 rows selected

Tuy nhiên, truy vấn này sẽ luôn trả về 0 hàng, bất kể số hàng trong bảng.

Để giải thích hành vi này, chúng ta cần hiểu cách Oracle xử lý ROWNUM. Khi gán ROWNUM cho một hàng, Oracle bắt đầu từ 1 và chỉ tăng giá trị khi một hàng được chọn; nghĩa là, khi tất cả các điều kiện trong mệnh đề WHERE được đáp ứng. Vì điều kiện của chúng tôi yêu cầu ROWNUM lớn hơn 2, không có hàng nào được chọn và ROWNUM không bao giờ được tăng vượt quá 1.

http://blog.lishman.com/2008/03/rownum.html

một liên kết stackoverflow khác

Đã chỉnh sửa

đoạn này tôi tìm thấy trên oracle trang web tốt hơn nhiều

Kiểm tra điều kiện cho các giá trị ROWNUM lớn hơn một số nguyên dương luôn sai. Ví dụ:truy vấn này không trả về hàng nào:

SELECT * FROM employees
    WHERE ROWNUM > 1;

Hàng đầu tiên được tìm nạp được gán ROWNUM là 1 và làm cho điều kiện sai. Hàng thứ hai được tìm nạp bây giờ là hàng đầu tiên và cũng được gán ROWNUM là 1 và làm cho điều kiện sai. Tất cả các hàng sau đó không thỏa mãn điều kiện, vì vậy không có hàng nào được trả lại.

Bạn cũng có thể sử dụng ROWNUM để chỉ định các giá trị duy nhất cho mỗi hàng của bảng, như trong ví dụ sau:



  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ách gọi một phương thức siêu đối tượng Oracle PL / SQL

  2. Phân tích cú pháp tnsnames.ora trong Visual C # 2008

  3. Chèn / cập nhật Oracle Trigger

  4. Biểu mẫu Oracle trong R12 / R12.2

  5. Trả về tên cột Oracle ở định dạng table.column?