如何限制ORACLE
查询返回的记录数?
和
你认为哪种方式最好?
答案 0 :(得分:6)
在查询结尾添加“rownum< =#of entries”。
答案 1 :(得分:3)
自Oracle 12c起,您还可以使用fetch first row only
。
第一行:
select * from example fetch first row only;
前10行:
select * from example fetch first 10 rows only;
答案 2 :(得分:2)
然而,这有一个缺点。如果要按降序或升序列出记录,可能只会遗漏一些记录。假设您将返回限制为8行,然后查询将前8次出现并按排序顺序列出。
以下查询将获取表中符合条件的第8条记录,并按您的顺序对其进行排序。例如
select
order, order_date, booked_out_date
from
orderdb
where
booked_out_date is not null
and rownum <= 8
order by
booked_out_date;
下一个查询将首先获取符合我标准的所有记录,对其进行排序,然后它将显示按日期顺序预订的前八个订单。
Select *
From
(Select
order, order_date, booked_out_date
From
orderdb
Where
booked_out_date is not null
Order By date)
Where
rownum <= 8;
如果预订的订单属于前八个订单,但他们在表中的记录是ie。第20条记录,你可能会在第一次查询时错过它,但第二条记录会把它拿起来。
答案 3 :(得分:1)
首先,你是分页,因此需要有限的行(这是一个有效的结果限制器)?相反,问问自己,你的查询对于手头的任务是否过于深远。
如前所述,您可以使用rownum
来限制结果集,或者将rownum包装为如下所示的分页示例:
答案 4 :(得分:0)
这对我有用。你也可以实现这个分页。
SELECT
*
FROM
(
SELECT
inner_query.*,
ROWNUM rnum
FROM
(
SELECT
*
FROM
table_name
ORDER BY column_name
) inner_query
WHERE
ROWNUM <= 20
)
WHERE
rnum >= 1;
其中 rownum 为否。记录和 rnum 是起始位置。