ROWNUM
クエリを実行するまで割り当てられないため、WHEREで使用することはできません。 そのような節。
次のことができます:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
ROWNUM 結果セット内の行の位置であり、レコードが選択された後に評価されます。
これらのタイプのクエリは機能しません:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
しかし、これは機能します
WHERE ROWNUM < x
rownumを評価したいので modを使用 rownumのため、機能しません その時点では利用できません。これが、modを使用するためにサブクエリに配置する必要がある理由です。 関数。