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

Hành vi của Oracle rownum với chức năng mod

ROWNUM không được chỉ định cho đến khi bạn truy vấn, vì vậy bạn sẽ không thể sử dụng nó trong WHERE mệnh đề như thế.

Bạn có thể làm như sau:

SELECT COUNT(*) 
FROM
(
  select v1, v2, rownum rn
  from Foo 
) f
WHERE mod(rn,2) = 0;

ROWNUM là vị trí của hàng trong tập kết quả và nó được đánh giá sau khi các bản ghi được chọn.

Các loại truy vấn này sẽ không bao giờ hoạt động:

WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y

Nhưng điều này sẽ hoạt động

WHERE ROWNUM < x

Vì bạn muốn đánh giá rownum với mod chức năng nó sẽ không hoạt động vì rownum không có sẵn tại thời điểm đó. Đây là lý do tại sao, bạn sẽ phải đặt nó trong một truy vấn phụ để sử dụng mod hàm số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối Oracle với SQL Server từ Windows

  2. Thay đổi khóa chính

  3. Truy vấn để tìm Nhân viên đã nghỉ nhiều hơn số ngày nghỉ đủ điều kiện liên quan đến Vai trò công việc của họ

  4. Chuyển phân số thành thập phân

  5. Các giá trị SQL MIN từ hai bảng