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
を使用するためにサブクエリに配置する必要がある理由です。 関数。