我正在进行查询并尝试从数据库中获取随机数量的行,但Oracle一直告诉我我的命令没有正确结束。
select *
from random_table
order by random_column_name
offset 0 rows
fetch first 10 rows only
这是我正在使用的代码。
我非常感谢任何支持,因为我花了很长时间寻找我得到的结果的解释,但无济于事。
答案 0 :(得分:3)
该语法在Oracle Database 12c之前无效。
你会说
select *
from random_table
order by random_col
where rownum < 11
答案 1 :(得分:3)
MSSQL:
offset 10 rows fetch first 10 rows only
甲骨文:
select *
from random_table
order by random_col
where rownum >= 10 and rownum < 20
答案 2 :(得分:1)
Oracle(适用于12c之前的版本):
select *
from (
select *, rownum rn
from (
select *
from random_table
order by random_col) t
where rownum <= 20) f
where rn > 10
答案 3 :(得分:1)
以上所有内容都不在Oracle 11.2中为我工作,所以这是另一种方式
select * from (
select random_table.*,
row_number() over (ORDER BY update_date DESC) line_number
FROM random_table where status = 100
) WHERE line_number between 5 AND 10
在上面的示例中,我在最新的update_date之前对状态和顺序进行了过滤,但是可以是任何内容。
在此,分页由起点(5)和终点(10)确定,如上所示。如果需要的话,这样可以轻松地根据页码和页面大小(在这种情况下为页面2,页面大小为5)进行计算。
答案 4 :(得分:0)
我是这样做的,所以我可以进行有序的搜索,而不必冒险看不到任何结果。
WITH lista AS(SELECT *
FROM random_table
ORDER BY random_column_name)
SELECT *
FROM lista
WHERE ROWNUM <= 10;