oracle先排序再分页

oracle先排序再分页

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) temp
WHERE 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,再进行排序,需要在套一层查询,即先拍好序,然后再生成rownum
SELECT 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
) T


SELECT 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、子句查询,这条语句可以加条件WHERE
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)

# 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、排序之后,再获取ROWNUM
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)) 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

注:本文为转载,原文地址:oracle先排序再分页

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101100.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++图片基本操作,旋转图片,获取图片像素

    c++图片基本操作,旋转图片,获取图片像素

    2021年3月12日
    194
  • ffmpeg安装教程win10_nginx菜鸟教程

    ffmpeg安装教程win10_nginx菜鸟教程简述作为一个计算机方面的小白,对ffmpeg其实没多少了解,只是因为在合并音频和视频要使用到ffmpeg这个工具,所以才下载下来,所以就是一个简单的安装教程。话不多说开始安装吧。下载百度网盘可能有兄弟访问github不是很给力,直接下载这个也是可以的链接:https://pan.baidu.com/s/1Z7VkOv-_PAub6OfDkyly4Q提取码:yj5e官网下载来到官网下载点击跳转来到下载主页点击这个进入github,找到资源下载即可下载这个也可以,我下载的时候出现了很

    2025年11月10日
    3
  • Fastai-学习器训练

    Fastai-学习器训练介绍Fastai框架下模型训练的各方面操作。

    2025年10月7日
    4
  • Modelsim的安装教程

    Modelsim的安装教程提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Modelsim安装二、激活成功教程1.拷贝Crack文件夹中的文件2.激活成功教程过程可能出现的错误前言Modelsim的安装与激活成功教程使用一、Modelsim安装打开下在之后的文件夹,直接双击exe文件进行安装。不熟悉时,可以直接使用默认路径进行安装,不进行路径上的修改。1、下载并解压好文件包,然后运行安装程序根据向导提示进行软件安装2、依提示安装软件过程中需要注意的是,会有三个弹出框提示,首先是是否创建桌面快捷方式提示

    2022年6月16日
    83
  • django pycharm_pycharm调试django

    django pycharm_pycharm调试django前言:主要是在开发过程中一些采坑和记录,整理一下资料以防自己以后忘了,也为正在初学或者还未特别熟练使用django的同学能够避开这些,且能够系统性的学习django的使用,这里就不写目录了按照我自己的开发顺序来,大家看到专栏里面的文章顺序就是我的目录了,在本专栏里的代码争取让大家拿到就能用,做一个伸手党,网上好多代码不知道是版本原因还是其他简直是无语,不能用还一堆bug。…

    2022年8月28日
    1
  • 记 – PC视频播放最强画质教程(Potplayer + madVR)「建议收藏」

    记 – PC视频播放最强画质教程(Potplayer + madVR)「建议收藏」PC视频播放最强画质教程前言:本次使用到的软件/工具Potplayer播放器Potplayer是目前我用到的最好用的宝藏视频播放软件:内存占用低、无广告、支持视频格式多、功能强大、扩展性高、界面唯美(网上下载皮肤)。MADVR插件MADVR是一款超强的视频插件,其配合高清播放软件,可以做到目前PC上播放高清视频的最强画质。MADVR这款视频渲染器比市面上大多数播放器自带的渲染器有着更精确的颜色处理,更高质量的图像缩放缩放、以及更低的颜色错误率。这就使得它所渲染出来的视频在

    2025年11月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号