我想获取10000到20000 rownum之间的数据我已经进行了此查询
SELECT xml_to_string(XMLRECORD) FROM TABLENAME WHERE ROWNUM >10000 AND ROWNUM<=20000
但上面的查询不起作用,但当我将查询更改为
时 SELECT xml_to_string(XMLRECORD) FROM TABLENAME WHERE ROWNUM >0 AND ROWNUM<=20000
它工作正常
我错过了什么..?
答案 0 :(得分:1)
rownum
不会停留在任何表格中它会生成运行时间,因此当您运行任何sql
语句时,只会在那个时间生成rownum
,因此您不能指望您可以在between
关闭中使用行数。
答案 1 :(得分:1)
试试这个:
SELECT xml_to_string(XMLRECORD) FROM (select t.*, rownum rw from TABLENAME t)
WHERE rw>10000 AND rw<=20000
当Oracle检索查询结果时计算Rownum。这就是查询select * from some_table where rownum > 1
永远不会返回任何内容的原因。
此外,如果没有ORDER BY,则获取10000到20000之间的行是没有意义的。您也可以获得第一个10000(因为行未分类,结果是不可预测的 - 任何行都可以是第一行)。 / p>
来自Oracle文档:
对于查询返回的每一行,ROWNUM伪列返回a 表示Oracle从a中选择行的顺序的数字 表或一组连接的行。选中的第一行的ROWNUM为1, 第二个有2个,依此类推。
测试ROWNUM值大于正整数的条件 总是假的。例如,此查询不返回任何行:
SELECT *
FROM employees
WHERE ROWNUM > 1;
为获取的第一行分配一个ROWNUM为1并生成 条件错误。要获取的第二行现在是第一行和 也被赋予ROWNUM为1并使条件为假。所有行 随后无法满足条件,因此不返回任何行。