Oracle中分页方式

Oracle中分页

最近在做课程作业的时候,数据库用的是Oracle,其中某个查询出来的结果集数量太多,需要进行分页,为了以后少走弯路,就把这次用到的分页SQL语句记录下来。

分页方式一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
select  
a2.id,
a2.userName,
a2.add_time
from
(
select
a1.id,
a1.userName,
a1.add_time,
rownum rn
from
(
select id,
user_name as userName,
add_time
from
user_info
where
user_name
like
concat('%', concat(#{keyword}, '%'))
) a1
where
rownum <= #{end_page}
) a2
where
a2.rn >= #{start_page}

上面用到几个变量#{start_page}#{end_page}#{keyword},其中 #{start_page} 表示的开始的行数,也就是从第几行开始取出数据(包括该行数据#{end_page} 表示结束的行数,也就是取出数据到第几行为止(包括该行数据), #{keyword} 表示搜索的关键词,这里可以自己指定。

分页方式二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
select 
a1.id,
a1.userName,
a1.add_time
from
(
select
id,
user_name as userName,
add_time,
rownum rn
from
user_info
where
user_name
like
concat('%', concat(#{keyword}, '%')) a1
)
where
a1.rn
between
#{start_page}
and
#{end_page}

这里的几个变量表示的含义和方式一中的几个变量含义一样。

参考

  1. Oracle数据库分页的三种方法

  2. Oracle分页(limit方式的运用)

显示评论