选择前150行,然后选择下一行150,依此类推?

sab*_*abi 6 sql oracle select rows

如何在表中的oracle sql中选择前x行,然后是下一个x,依此类推?我知道我可以使用TOP/LIMIT,然后我得到第一个x

select a from b limit 150 =>得到前150行.

编辑:为什么?我想将前150个输出复制到一个文件中,然后将下一个150复制到另一个文件中等等......

xbo*_*nez 11

LIMIT 150或者LIMIT 0,150:前150行

LIMIT 150,150 :接下来的150行

LIMIT 300,150 :接下来的150行

等等

  • 设置变量“a = 1”。`限制 (a-1)*150,150`。增量A. (这是伪SQL) (4认同)

vul*_*ino 10

在Oracle中你很好rownum:它是一个伪列.它对结果集中的记录进行编号.给出了满足select语句中where条件的第一条记录,并且满足rownum=1相同条件的每个后续记录都会增加rownum.

SELECT 
    a, b
FROM
    (SELECT rownum rn, a, b from table WHERE c=some_value ORDER BY some_column)
WHERE 
    rn BETWEEN 150 AND 300;
Run Code Online (Sandbox Code Playgroud)

(感谢@Mark Ba​​nnister)

如果在子查询中嵌入ORDER BY子句并将ROWNUM条件放在顶级查询中,则可以在排序行之后强制应用ROWNUM条件.