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;
本文暂时没有评论,来添加一个吧(●'◡'●)