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先排序再分页

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QThread类[通俗易懂]

    QThread类[通俗易懂]QThread类提供一种独立于平台的线程管理方式。翻译自官方文档(译者:Qt君)

  • linux目录结构详解_docker文件目录

    linux目录结构详解_docker文件目录前言平常linux系统用的也不少,那么linux下的每个目录都是用来干什么的,小伙伴们有仔细研究过吗?让我们来了解下吧Linux系统目录结构登录系统后,在当前命令窗口下输入命令:[root@

  • java 调用bapi_BAPI的简单实现步骤

    java 调用bapi_BAPI的简单实现步骤一,创建FunctionModule1,在SE11,创建需要的structure(必须为flat类型,否则会出现ReferenceparametersarenotallowedwithRFC)2,在SE80,建Functiongroup3,在SE37,创建FunctionModule(import的参数入药是value传值)Note:一个FunctionGroup只能包含一个B…

  • android自动化测试框架_GMS测试

    android自动化测试框架_GMS测试GMSP的测试已经开始一段时间了,这里记录一下跟O的不同之处,资料主要来自MTK官网。一、Case数量增加(以Pgo项目为例,64bit项目double)a、CTS测试增加8万条,module增至320b、增加CTS-INSTANT测试项目,module48,1.3万条(13338)、64bit13338,以实际为准;c、VTS测试增加约2…

  • PHP审计之POP链挖掘

    PHP审计之POP链挖掘前言续上文中的php反序列化,继续来看,这个POP的挖掘思路。在其中一直构思基于AST去自动化挖掘POP链,迫于开发能力有限。没有进展,随后找到了一个别的师傅已经实现好的项

    2021年12月13日
  • mysql慢查询分析工具_mysql慢查询日志分析工具「建议收藏」

    mysql慢查询分析工具_mysql慢查询日志分析工具「建议收藏」启用slowlog有两种启用方式:1,在my.cnf里通过log-slow-queries[=file_name]2,在mysqld进程启动时,指定–log-slow-queries[=file_name]选项比较的五款常用工具mysqldumpslow,mysqlsla,myprofi,mysql-explain-slow-log,mysqllogfiltermysqld…

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

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