Oracle row_number() over()解析函数高效实现分页
网络编程 2021-07-05 16:08www.168986.cn编程入门
Oracle row_number() over()解析函数高效实现分页,需要的朋友可以参考下。
代码如下:
create table T_NEWS
(
ID NUMBER,
N_TYPE VARCHAR2(20),
N_TITLE VARCHAR2(30),
N_COUNT NUMBER
)
prompt Disabling triggers for T_NEWS...
alter table T_NEWS disable all triggers;
prompt Loading T_NEWS...
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (1, 'IT', '爱it1', 100);
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (2, '体育', '爱体育1', 10);
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (3, '体育', '爱体育2', 30);
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (4, 'IT', '爱it2', 300);
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (5, 'IT', '爱it3', 200);
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (6, '体育', '爱体育3', 20);
insert into T_NEWS (ID, N_TYPE, N_TITLE, N_COUNT)
values (7, '体育', '爱体育4', 60);
mit;
第一步我先用rownum
--分页 row_number,不是rownum
--根据n_count从大到小排列,每页3条
SELECT ROWNUM r,t. FROM t_news t
WHERE ROWNUM<=3
ORDER BY t.n_count DESC
--问题为什么order by以后,行号是乱的?
SELECT ROWNUM r,t. FROM t_news t
--原因先分配了行号,再根据n_count排序
--所以必须排序,再生成行号
SELECT ROWNUM r,t. FROM (
SELECT t. FROM t_news t ORDER BY t.n_count DESC ) t
--分页
--err
SELECT ROWNUM r,t. FROM (
SELECT t. FROM t_news t ORDER BY t.n_count DESC ) t
WHERE r between 1 AND 3
--第1页
SELECT ROWNUM r,t. FROM (
SELECT t. FROM t_news t ORDER BY t.n_count DESC ) t
WHERE ROWNUM between 1 AND 3
--第2页
SELECT ROWNUM r,t. FROM (
SELECT t. FROM t_news t ORDER BY t.n_count DESC ) t
WHERE ROWNUM between 4 AND 6
--error: ROWNUM必须从1开始!
SELECT k. FROM (
SELECT ROWNUM r,t. FROM (
SELECT t. FROM t_news t ORDER BY t.n_count DESC ) t
) k
WHERE r BETWEEN 4 AND 6
--麻烦,效率低!
第二步:我用row_number() over()函数
select t2. from
(select t.,row_number()over(order by t.n_count desc) orderNumber from t_news t order by t.n_count desc)t2 where orderNumber between 1and 3;
88
SELECT FROM (
SELECT t.,row_number() over(ORDER BY n_count DESC) r
FROM t_news t
ORDER BY t.n_count DESC
) t
WHERE r BETWEEN 4 AND 6
--通用语法 解析函数() over(partition by 字段 order by 字段)
上一篇:Oracle学习笔记(一)
下一篇:Oracle AS关键字 提示错误
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南