oracle 数据库查找前几条数据

oracle 数据库查找前几条数据,第1张

由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum

的组合来实现select top n的查询。

简单地说,实现方法如下所示:

select 列名1 ...列名n from(select 列名1 ...列名n

from 表名 order by 列名1)where rownum <=N(抽出记录数)

order by rownum asc

如:select id,name from (select id,name from student order by name) where rownum<=10 order by rownum asc

按姓名排序取出前十条数据

附:取100-150条数据的方法1.

最佳选择:利用分析函数

row_number() over ( partition by col1 order by col2 )比如想取出100-150条记录,按照tname排序

select tname,tabtype from (

select tname,tabtype,row_number() over ( order by tname ) rn from tab

) where rn between 100 and 150

2. 使用rownum 虚列

select tname,tabtype from (

select tname,tabtype,rownum rn from tab

根据时间条件排序,取前十条和后十条。

1、有时间字段, 根据时间条件排序,取前十条和后十条

(1)前十条:

select * from (select * from tab_name a order by date_col )

where rownum<11

(2)后十条:

select * from (select * from tab_name a order by date_col  desc)

where rownum<11

2、没有时间字段, 直接根据物理存储顺序,取前十条和后十条

(1)前十条:

select * from (select * from tab_name a order by rownum)

where rownum<11

(2)后十条:

select * from (select * from tab_name a order by rownuml  desc)

where rownum<11

可以用rownum来查询

例如:select * from 用户名.表名 where rownum <= 100则查询前100条数据,oracle会根据查询结果筛选前100条,记得如果增加查询条件,oracle首先会根据查询条件进行筛选,然后再取前100条,而不是筛选100条后才根据查询条件进行筛选


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10064821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存