Oracle SQL选择每隔N行(不使用MOD)

时间:2015-02-22 18:20:47

标签: sql oracle

嘿所有,所以我试图从表中选择每一行。

我知道如何使用带有子查询的MOD函数来执行此操作。但是我只想找到不使用内置函数MOD的解决方案。

任何想法或任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:4)

您可以模拟mod()函数(这是执行此操作的正确方法)。例如,要获得每第10行:

select t.*
from (select rownum as rn, t.*
      from table t
     ) t
where rn - trunc(rn/10)*10 = 0;

答案 1 :(得分:1)

起点可以是分析函数NTH_VALUE。 但是,默认情况下,它将仅返回第9行,而不是每第9行。 也许你可以用一些子查询来实现它。

答案 2 :(得分:1)

将ROWNUM除以N - 如果它是一个整数,则接受它:

SELECT *
  FROM (SELECT t.*, ROWNUM AS RN
          FROM YOUR_TABLE t)
  WHERE RN / 10 = TRUNC(RN / 10)

分享并享受。