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

chọn rownum từ mức lương mà rownum =3;

Oracle gán các giá trị cho ROWNUM tuần tự khi các hàng được tạo ra bởi truy vấn - do đó, hàng đầu tiên được tìm nạp nhận ROWNUM =1, hàng thứ hai được tải xuống nhận ROWNUM =2, hàng thứ ba được tải xuống nhận ROWNUM =3, v.v. Lưu ý - cho một hàng được gán ROWNUM =3 PHẢI tìm nạp hai hàng trước đó. Và đây là lý do tại sao truy vấn của bạn không trả về hàng nào. Bạn đang yêu cầu cơ sở dữ liệu cho hàng thứ ba được tìm nạp - nhưng hàng 1 và 2 chưa bao giờ được tìm nạp.

Để chứng minh, hãy thử chạy các truy vấn sau:

SELECT S.* FROM SALARY S;          -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S;  -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3;  -- Should return no rows

Để khắc phục sự cố của bạn, hãy thử cách sau:

SELECT ROW_NUMBER FROM
  (SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
  WHERE ROW_NUMBER = 3;

Chia sẻ và tận hưởng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sử dụng Partition By hoặc Max?

  2. Làm thế nào để triển khai các mối quan hệ một-một, một-nhiều và nhiều-nhiều trong khi thiết kế bảng?

  3. Giải thích về toán tử INTERSECT của Oracle

  4. Cập nhật Oracle bị treo

  5. sự khác biệt giữa kế hoạch giải thích và kế hoạch thực hiện