【SQL】order by 分页排序
遇到项目,需要按照结束时间从最近的开始排序,首先思路就是先排序,再分页,分页是按照每页10行,也就是第一页查询行号1-10的数据来实现;
1.先查询数据并排序
select row_number() over(order by ROWNUM) as rn,to_char(bp.startdate, 'yyyy-mm-dd HH:mi:ss') "startdate",to_char(bp.enddate, 'yyyy-mm-dd HH:mi:ss') "enddate"from T_Client_Policy cpleft join T_Bus_Policy bpon cp.policyno = bp.policynoand cp.riskcode = bp.riskcodewhere cp.clientno = '200054382009' order by enddate desc
查询后排序正常
2.输出行号为1-10的数据
select *from (select row_number() over(order by ROWNUM) as rn,to_char(bp.startdate, 'yyyy-mm-dd HH:mi:ss') "startdate",to_char(bp.enddate, 'yyyy-mm-dd HH:mi:ss') "enddate"from T_Client_Policy cpleft join T_Bus_Policy bpon cp.policyno = bp.policynoand cp.riskcode = bp.riskcodewhere cp.clientno = '200054382009' order by enddate desc)where rn between 1 and 10
发现数据并的结束日期并没有按照2019年为最开始往下排序
查看原因,发现结束日期并不是我们想象中的2019排在最前边,仔细看看,是定义的行号不对,
原因:SQL在进行查询的时候,先查询后排序,所以,我们需要在外边加一层已经排序好的sql,对最外层进行行号取1-10行为一进行分页
正确:
select *from (select row_number() over(order by ROWNUM) as rn, startdate, enddatefrom (select to_char(bp.startdate, 'yyyy-mm-dd HH:mi:ss') startdate,to_char(bp.enddate, 'yyyy-mm-dd HH:mi:ss') enddatefrom T_Client_Policy cpleft join T_Bus_Policy bpon cp.policyno = bp.policynoand cp.riskcode = bp.riskcodewhere cp.clientno = '200054382009'order by enddate desc))where rn between 1 and 10
【SQL】order by 分页排序相关推荐
- Sql order by 数据排序 优先级问题
前几天学习T-SQL ,在介绍Order By 排序的时候,突然想到多字段排序的时候优先级是按什么顺序排的,我便上机操作了一下,写此笔记,帮助记忆,也希望能帮到其他人. select * from 表 ...
- mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20
一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...
- oracle分页排序sql,oracle 排序分页 高效sql语句
最好还是利用分析函数row_number() over ( partition by col1 order by col2 ) 比如想取出100-150条记录,按照tname排序 select tna ...
- SqlServer分页排序存储过程 V1.0
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO /* 分页排序存储过程 V1.0 */ ALTER procedure [dbo].[sp_Key ...
- 在SQL Server中分页结果的最佳方法是什么
如果您还希望获得结果总数(在进行分页之前),那么在SQL Server 2000.2005.2008.2012中对结果进行分页的最佳方法是(性能明智的)? #1楼 最终, Microsoft SQL ...
- SQL SERVER 通用分页存储过程
SQL SERVER 通用分页存储过程 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和page ...
- Sql Server通用分页存储过程
sql server2000分页方式很多,效率吗 当到达10万级以上就有些吃力了,这里暂时不例出来了 sql server2005以上就有了row_number 也是一大进步,详情如下参考 Sql ...
- 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字 CREATE PROCEDURE SelectPagedSQL ( @SQL nvarchar(512), ...
- 浅谈SQL Server数据库分页
数据库分页是老生常谈的问题了.如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定.但是有时由于限制,需要使用存储过程来实现.在SQLServer中使用存储过程实现分页的已经有很多 ...
最新文章
- pytest测试实战 电子书_pytest实战APL测试框架
- python七段数码管设计图案-Python 七段数码管绘制
- 全面布局大数据平台,银科控股签约神策数据
- uva 753(网络流最大流)
- PHP 在作为中间件时print无返回值问题
- 【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流
- Linux IPC实践(10) --Posix共享内存
- Linux 关闭网络管理服务
- 利用Spring的AbstractRoutingDataSource解决多数据源的读写分离问题
- php ajax加载,php – 什么更快? Ajax加载JSON或Ajax加载完整输出
- python colorama 横向打印_让python的print变得更好看——prettytable和colorama
- Android 游戏开发入门 视频+源码
- 02333软件工程_201910_试卷+答案
- 【Uly】微软产品开发中的“战争与和平”
- 2022全国职业技能大赛大数据技术与应用赛项赛题环境准备
- Android application 和 activity 标签详解
- 在树莓派3B+上部署Intel NCS2神经网络计算棒
- PostgreSQL的查询技巧: 零除, GENERATED STORED, COUNT DISTINCT, JOIN和数组LIKE
- python 依据某几列累加求和_如何用Python找出PSY超卖的股票?
- 做IAP远程升级时,APP程序地址修改了中断向量偏移地址不起效果的原因分析