ROWNUM
nie jest przypisany, dopóki nie wyślesz zapytania, więc nie będziesz mógł go użyć w WHERE
taka klauzula.
Możesz wykonać następujące czynności:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
ROWNUM
to pozycja wiersza w zestawie wyników i jest oceniana po wybraniu rekordów.
Te typy zapytań nigdy nie będą działać:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Ale to zadziała
WHERE ROWNUM < x
Ponieważ chcesz ocenić rownum
z mod
funkcja nie zadziała, ponieważ rownum
nie jest dostępna w tym momencie. Dlatego musiałbyś umieścić go w podzapytaniu, aby użyć mod
funkcjonować.