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怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指