如何在oracle sql中的表中选择前x行,然后选择下x行,依此类推?我知道我可以使用TOP / LIMIT,然后得到第一个x
select a from b limit 150 =>获得前150行。
select a from b limit 150
编辑:为什么?我想将前150个输出复制到文件中,然后将后150个复制到另一个文件中,依此类推…
在Oracle中,您有一个不错的选择rownum:它是一个伪列。它对结果集中的记录编号。给出了一条符合select语句中where条件的第一个记录rownum=1,并且随后每个满足相同条件的记录都会增加rownum。
rownum
rownum=1
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;
(感谢@Mark Bannister)
如果将ORDER BY子句嵌入子查询中,并将ROWNUM条件放置在顶级查询中,则可以强制ROWNUM条件在行排序之后应用。