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ố.