博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle先排序再分页
阅读量:7125 次
发布时间:2019-06-28

本文共 2497 字,大约阅读时间需要 8 分钟。

Oracle排序分页查询和MySQL数据库的语句还不一样,这里做简单的记录。

按操作时间排序1

SELECT A.*, ROWNUM RN FROM (SELECT * FROM v_log) A ORDER BY operatetime DESC

结果

clipboard.png

可以发现,按时间排序了,但是rownum并不是从小到大,因为oracle是先生成rownum,再进行排序,需要在套一层查询

按操作时间排序2

SELECT T.*, rownum RN FROM(      SELECT * FROM (SELECT * FROM v_log) ORDER BY operatetime DESC     ) T

结果:

clipboard.png

顺序正确,rownum正确,在此基础上再套一层查询进行分页

按操作时间排序并分页

SELECT T2.* from(    SELECT T.*, rownum RN FROM(SELECT * FROM (SELECT * FROM v_log) ORDER BY operatetime DESC )T) T2 WHERE RN BETWEEN 1 and 10

clipboard.png

测试

SELECT * FROM (        SELECT A."sku", ROWNUM rn, A."goods_sn"         FROM AMZ_HUOPIN_SKU A        WHERE ROWNUM <= 10 ORDER BY A."goods_sn" DESC) tempWHERE temp.rn > 0;SELECT A."sku", A."goods_sn", ROWNUM RN FROM AMZ_HUOPIN_SKU A ORDER BY A."sku" DESC## 子查询先找出所有,然后再rownum,rownum 为伪列,后再排序SELECT A."sku", A."goods_sn", ROWNUM RN FROM (SELECT * FROM AMZ_HUOPIN_SKU) A ORDER BY A."sku" DESC## 因为oracle是先生成rownum,再进行排序,需要在套一层查询,即先拍好序,然后再生成rownumSELECT T."sku", T."goods_sn", ROWNUM RN FROM (SELECT * FROM (SELECT * FROM AMZ_HUOPIN_SKU) ORDER BY "sku" DESC) T## 上边的这两个语句是等价的SELECT T."sku", T."goods_sn", ROWNUM RN FROM (SELECT * FROM AMZ_HUOPIN_SKU ORDER BY "sku" DESC) TSELECT T2.* FROM(SELECT T."sku", T."goods_sn", ROWNUM RN FROM (SELECT * FROM AMZ_HUOPIN_SKU ORDER BY "sku" DESC) T) T2 WHERE RN BETWEEN 0 AND 10

综合查询

# 1、子句查询,这条语句可以加条件WHERESELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU)# 2、排序SELECT * FROM (SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU)) ORDER BY "goods_sn" DESC# 3、排序之后,再获取ROWNUMSELECT T.*, ROWNUM RN FROM (SELECT * FROM (SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU)) ORDER BY "goods_sn" DESC) T# 4、再根据获取到的ROWNUM按照顺序进行分页SELECT R.* FROM(  SELECT T.*, ROWNUM RN FROM (SELECT * FROM (SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A   LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU WHERE A."goods_sn" = 'K832026565')) ORDER BY "goods_sn" DESC) T) R WHERE RN BETWEEN 10 AND 20

注:本文为转载,原文地址:

你可能感兴趣的文章
2014-02-23,LAMP-ThinkPHP听课笔记
查看>>
oracle 脚本(1)-清空当前用户下所有表的数据
查看>>
即可去除桌面图标阴影
查看>>
BlockingQueue详解
查看>>
SVN入门及配置使用
查看>>
Java IO类库之ByteArrayOutputStream
查看>>
《Spring5学习》04 - 面向切面编程
查看>>
druid简单教程
查看>>
推荐一款免费好用的网页视频播放器
查看>>
Android 保活
查看>>
小程序环境搭建与开发工具的简单介绍
查看>>
我的友情链接
查看>>
red hat5安装mysql5.5.25
查看>>
深入理解C++的动态绑定和静态绑定
查看>>
cisco 7200 simulator
查看>>
JAVA WEB搭建 SpringMVC+Spring+hibernate 框架
查看>>
HibernateTemplate中常用的方法
查看>>
clang: error: unknown argument: 'websockets'解决方法
查看>>
Vue.js 特有的一种ajax——axios
查看>>
我的友情链接
查看>>