我有一套4000条记录,我只能检索300条记录。
我正在对结果集进行分页,但由于我们将结果限制为300,因此每次数据库命中都会得到不同的结果。
所以有没有选项可以获得4000条记录的前300条记录,而不会获得4000条记录的全部结果。
以下是查询:
从表中选择id,其中name ='ronaldo'和rownum< = 300 order by id asc;
答案 0 :(得分:1)
问题是按以下顺序处理查询:
因此,您所写的查询将随机返回300条记录。
您需要执行嵌套查询,如下所示:
select * from
(select * from table
where name='ronaldo' order by id asc)
where ROWNUM <= 300;
此外,如果您使用的是Oracle 12c或更高版本,则可以使用完全非标准的 FETCH FIRST
语法:
SELECT *
FROM table
WHERE name='ronaldo'
ORDER BY id asc
FETCH FIRST 300 ROWS ONLY;
为什么他们不支持LIMIT
关键字?因为他们是甲骨文。