编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Oracle查询top n条数据,查询中间若干条数据:Oracle第一篇

wxchong 2024-07-22 22:30:34 开源技术 14 ℃ 0 评论

order by 实现按照字段排序,rownum是虚拟列

查询top n条数据

在Oracle中经常是用order by 跟rownum

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

简单地说,实现方法如下所示:后面是具体例子。

select 列名1 ...列名n from

(

select 列名1 ...列名n

from 表名 order by 列名1

)

where userid <=N(抽出记录数)

order by userid asc

如下是一个已经创建的表,只需要关注有哪些字段即可:

create table TEST_TABLE1

(

idINTEGER,

nameNVARCHAR2(38),

sex CHAR(3),

age INTEGER,

salary NUMBER,

analysis_one NUMBER,

analysis_two NUMBER,

row_guid NVARCHAR2(38)

)

tablespace TESTSYS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

取id值小于10的所有记录:

select id,name from (select id,name from test_table1 order by id) where id<=10 order by id asc

使用rownum 虚列

select id,name from (select id,name from test_table1 order by name) where rownum<=10 order by rownum asc

使用分析函数,取特定范围内的数据

select name,id,num from(

select name,id,rownum num from test_table1 where rownum <= 30

)where num >= 20;

上面是取表中的20到30行数据

rownum()为查询记录序列号

select * from (select rownum r,emp.* from emp) e where r between 3 and 6;

select * from (select rownum r, id ,namefrom test_table1) e where r between 1 and 5;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表